BootStrap中的表单大全

BootStrap中的表单大全

BootStrap是目前使用最为广泛的前端框架之一,其中表单是网站开发中比较常用的组件之一。本文将对BootStrap中的表单进行详细讲解,包括表单组成、常用表单类型、表单验证等内容,帮助读者在BootStrap中更好地使用表单组件。

表单组成

在BootStrap中,一个表单必须包含以下几个组成部分:

  • form标签:定义表单,包裹整体表单内容;
  • input标签:包括表单输入框、单选框、复选框、文件上传等内容;
  • label标签:标签中的文字会和对应的input标签相关联;
  • button标签:提交表单的按钮。

一个基本的表单结构如下所示:

<form>
  <div class="form-group">
    <label for="username">用户名</label>
    <input type="text" class="form-control" id="username">
  </div>
  <div class="form-group">
    <label for="password">密码</label>
    <input type="password" class="form-control" id="password">
  </div>
  <button type="submit" class="btn btn-primary">提交</button>
</form>

常用表单类型

在BootStrap中,可以使用各种表单类型,包括文本框、单选框、复选框、下拉框、文件上传等。下面对常用表单类型进行详细讲解。

文本框

文本框是最常用的表单类型之一,BootStrap中的文本框包括普通文本框、文本域和密码框。可以通过以下代码创建一个文本框:

<input type="text" class="form-control" id="username" placeholder="请输入用户名">

其中class为form-control表示使用BootStrap的表单样式,id为username表示为文本框设置唯一标识符,placeholder为提交前在文本框内显示的带有灰色提示的文本。

[picture]

单选框和复选框

单选框和复选框是用来让用户选择一个或多个选项的表单类型,可以使用以下代码创建单选框和复选框:

<div class="form-check">
  <label class="form-check-label">
    <input type="radio" class="form-check-input" name="optionsRadios" id="optionsRadios1" value="option1" checked>
    选项1
  </label>
</div>
<div class="form-check">
  <label class="form-check-label">
    <input type="radio" class="form-check-input" name="optionsRadios" id="optionsRadios2" value="option2">
    选项2
  </label>
</div>
<div class="form-check">
  <label class="form-check-label">
    <input type="checkbox" class="form-check-input" name="option1" id="option1" value="option1" checked>
    选项1
  </label>
</div>
<div class="form-check">
  <label class="form-check-label">
    <input type="checkbox" class="form-check-input" name="option2" id="option2" value="option2">
    选项2
  </label>
</div>

单选框需要设置name来确定选项互斥关系,复选框需要设置不同的name来表示不同的选项。checked属性可以设置默认选中某个选项。

[picture]

下拉框

下拉框是一种方便用户选择的常用表单类型,可以使用以下代码创建一个下拉框:

<select class="form-control">
  <option value="option1">选项1</option>
  <option value="option2">选项2</option>
  <option value="option3">选项3</option>
</select>

其中option标签表示不同的选项,value属性表示选项的值,显示出来的是option标签之间的文本内容。

[picture]

文件上传

文件上传可以使用以下代码创建:

<div class="custom-file">
  <input type="file" class="custom-file-input" id="customFile">
  <label class="custom-file-label" for="customFile">选择文件</label>
</div>

在BootStrap中,使用class="custom-file-input"属性设置文件上传样式,label标签的for属性对应文件上传的控件id。

[picture]

表单验证

在表单中添加验证可以有效减少用户提交信息的错误和不规范,BootStrap为表单验证提供了自带的插件。下面演示一些表单验证的例子。

<form>
  <div class="form-group">
    <label for="username">用户名</label>
    <input type="text" class="form-control" id="username" required>
    <div class="invalid-feedback">用户名不能为空</div>
  </div>
  <div class="form-group">
    <label for="email">邮箱</label>
    <input type="email" class="form-control" id="email" required>
    <div class="invalid-feedback">邮箱格式不正确</div>
  </div>
  <div class="form-group">
    <label for="password_1">密码</label>
    <input type="password" class="form-control" id="password_1" minlength="6" required>
    <div class="invalid-feedback">密码不能少于6位</div>
  </div>
  <div class="form-group">
    <label for="password_2">确认密码</label>
    <input type="password" class="form-control" id="password_2" minlength="6" required>
    <div class="invalid-feedback">两次密码不一致</div>
  </div>
  <button type="submit" class="btn btn-primary">提交</button>
</form>

添加了required属性用于表示字段为必填项,invalid-feedback对应错误提示信息,minlength属性表示最小长度。

[picture]

还可以使用js代码控制表单验证:

// 表单验证
(function () {
  'use strict'

  // Fetch all the forms we want to apply custom Bootstrap validation styles to
  var forms = document.querySelectorAll('.needs-validation')

  // Loop over them and prevent submission
  Array.prototype.slice.call(forms)
    .forEach(function (form) {
      form.addEventListener('submit', function (event) {
        if (!form.checkValidity()) {
          event.preventDefault()
          event.stopPropagation()
        }

        form.classList.add('was-validated')
      }, false)
    })
})()

通过添加class为needs-validation,就可以在form提交的时候进行表单验证。

示例说明

示例一:注册页面

下面是一个简单的注册页面,包括文本框、单选框和密码框等表单类型,同时添加了表单验证来验证用户输入的信息。

<!DOCTYPE html>
<html>
<head>
  <title>注册</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css">
</head>
<body>
  <div class="container mt-5">
    <form class="needs-validation" novalidate>
      <div class="form-group">
        <label for="username">用户名</label>
        <input type="text" class="form-control" id="username" required>
        <div class="invalid-feedback">用户名不能为空</div>
      </div>
      <div class="form-group">
        <label for="email">邮箱</label>
        <input type="email" class="form-control" id="email" required>
        <div class="invalid-feedback">邮箱格式不正确</div>
      </div>
      <div class="form-group">
        <label>性别</label><br>
        <div class="form-check form-check-inline">
          <input class="form-check-input" type="radio" name="gender" id="gender_male" value="male" required>
          <label class="form-check-label" for="gender_male">
            男
          </label>
        </div>
        <div class="form-check form-check-inline">
          <input class="form-check-input" type="radio" name="gender" id="gender_female" value="female" required>
          <label class="form-check-label" for="gender_female">
            女
          </label>
        </div>
        <div class="invalid-feedback">请选择性别</div>
      </div>
      <div class="form-group">
        <label for="password_1">密码</label>
        <input type="password" class="form-control" id="password_1" minlength="6" required>
        <div class="invalid-feedback">密码不能少于6位</div>
      </div>
      <div class="form-group">
        <label for="password_2">确认密码</label>
        <input type="password" class="form-control" id="password_2" minlength="6" required>
        <div class="invalid-feedback">两次密码不一致</div>
      </div>
      <button type="submit" class="btn btn-primary">提交</button>
    </form>
  </div>
  <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.slim.min.js"></script>
  <script src="https://cdn.bootcdn.net/ajax/libs/popper.js/2.9.2/umd/popper.min.js"></script>
  <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script>
  <script>
    (function () {
      'use strict'

      // Fetch all the forms we want to apply custom Bootstrap validation styles to
      var forms = document.querySelectorAll('.needs-validation')

      // Loop over them and prevent submission
      Array.prototype.slice.call(forms)
        .forEach(function (form) {
          form.addEventListener('submit', function (event) {
            if (!form.checkValidity()) {
              event.preventDefault()
              event.stopPropagation()
            }

            form.classList.add('was-validated')
          }, false)
        })
    })()
  </script>
</body>
</html>

[picture]

示例二:搜索页面

下面是一个简单的搜索页面,包括文本框、单选框和下拉框等表单类型。

<!DOCTYPE html>
<html>
<head>
  <title>搜索</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css">
</head>
<body>
  <div class="container mt-5">
    <form>
      <div class="form-group">
        <label for="input_key_words">关键词</label>
        <input type="text" class="form-control" id="input_key_words" placeholder="请输入关键词">
      </div>
      <div class="form-group">
        <label>类型</label><br>
        <div class="form-check form-check-inline">
          <input class="form-check-input" type="radio" name="book_type" id="book_type_all" value="all" checked>
          <label class="form-check-label" for="book_type_all">
            全部
          </label>
        </div>
        <div class="form-check form-check-inline">
          <input class="form-check-input" type="radio" name="book_type" id="book_type_novel" value="novel">
          <label class="form-check-label" for="book_type_novel">
            小说
          </label>
        </div>
        <div class="form-check form-check-inline">
          <input class="form-check-input" type="radio" name="book_type" id="book_type_history" value="history">
          <label class="form-check-label" for="book_type_history">
            历史
          </label>
        </div>
      </div>
      <div class="form-group">
        <label for="select_sort">排序方式</label>
        <select class="form-control" id="select_sort">
          <option value="time">按时间</option>
          <option value="hot">按热度</option>
          <option value="rating">按评分</option>
        </select>
      </div>
      <button type="submit" class="btn btn-primary">搜索</button>
    </form>
  </div>
  <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.slim.min.js"></script>
  <script src="https://cdn.bootcdn.net/ajax/libs/popper.js/2.9.2/umd/popper.min.js"></script>
  <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script>
</body>
</html>

[picture]

总结

在本文中,我们详细讲解了BootStrap中的表单大全,包括表单组成、常用表单类型和表单验证等内容。希望读者能够通过本文更好地使用BootStrap中的表单组件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:BootStrap中的表单大全 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JSP学习心得

    JSP学习心得攻略 JSP(Java Server Pages)是Java EE Web应用程序的基础。当您了解了它的核心概念和编程模型后,您就可以使用JSP构建高效、安全和可维护的Web应用程序。 了解JSP的语法和功能 JSP是一个动态Web页面技术,它通过Java代码和HTML文本产生动态内容。JSP支持以下语法组件: 用<% %>包围的J…

    JavaScript 2023年5月28日
    00
  • 小程序云开发初探(小结)

    小程序云开发初探(小结) 本文主要介绍小程序云开发的基础知识和使用方法。小程序云开发是微信小程序提供的一项新功能,可以通过云数据库、云存储和云函数来快速搭建一个完整的小程序。 1. 云开发环境配置 要使用小程序云开发,需要在微信公众平台上创建小程序,并在小程序后台开启云开发。 注册微信小程序账号 登录小程序后台,点击“设置”-“开发设置”,在云开发中开启开发…

    JavaScript 2023年6月10日
    00
  • 最新JS正则表达式验证邮箱和手机号实例(2022)

    针对这篇“最新JS正则表达式验证邮箱和手机号实例(2022)”文章,我将提供完整攻略如下: 文章概览 了解文章主题 确定验证目标:邮箱和手机号 设计验证规则:使用正则表达式 实现邮件和手机号码验证 确定验证目标:邮箱和手机号 在阅读这篇文章后,我们了解到验证目标是邮箱和手机号。在开始验证规则设计之前,首先需要了解邮箱和手机号的基本格式。 邮箱格式 一般的邮箱…

    JavaScript 2023年6月10日
    00
  • ES6模板字符串和标签模板的应用实例分析

    下面是关于 “ES6模板字符串和标签模板的应用实例分析” 的完整攻略。 ES6模板字符串 ES6模板字符串是一种新的字符串类型,用反引号 (`) 包裹字符串,可以使用 ${} 语法插入变量和表达式。它们也可以跨越多行而不需要添加额外的转义字符。 下面是一个示例,使用ES6模板字符串构建HTML模板: const name = ‘John’; const ag…

    JavaScript 2023年5月28日
    00
  • 前端JavaScript中的反射和代理

    首先简单介绍一下“前端JavaScript中的反射和代理”是什么意思。JavaScript中的反射和代理主要是针对对象进行操作,反射是指通过内置的API获取对象的属性和方法来进行操作,而代理则是指创建一个中间层来修改对象的行为和属性。 接下来分别详细介绍反射和代理,并提供两个示例说明。 反射 获取对象的属性和方法 在JavaScript中,我们可以使用内置的…

    JavaScript 2023年6月11日
    00
  • js为空或不是对象问题的快速解决方法

    这里是针对”js为空或不是对象问题的快速解决方法”的完整攻略。 背景分析 在开发JavaScript应用时,我们经常会遇到以下两种错误: Uncaught TypeError: Cannot read property ‘xxx’ of undefined 当我们使用某个对象属性时,出现了该错误,意味着该属性所属的对象没有被定义或为空。 Uncaught T…

    JavaScript 2023年5月18日
    00
  • Javascript Date setTime() 方法

    以下是关于JavaScript Date对象的setTime()方法的完整攻略,包括两个示例说明。 JavaScript Date对象的setTime()方法 JavaScript Date对象的setTime()方法设置对象的时间部分。该方法接受一个整数,表示自1970年1月1日00:00:00 UTC以来的毫秒数。如果参数超出了JavaScript所能表…

    JavaScript 2023年5月11日
    00
  • js正则表达式基本语法(精粹)

    下面是关于JS正则表达式基本语法的完整攻略。 JS正则表达式基本语法 正则表达式的定义 正则表达式(Regular Expression)是一种可以用于字符串匹配的规则,它可以帮助我们快速地从字符串中提取需要的信息。 正则表达式语法 在JS中,我们可以使用RegExp对象来创建正则表达式,其基本语法如下: var regExp = new RegExp(pa…

    JavaScript 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部