BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑

yizhihongxing

Bootstrap是一款常用的前端开发框架,封装了很多常用的功能组件,如表单验证功能。但是在使用Bootstrap的表单验证组件时,我们可能会遭遇一些坑,其中比较典型的就是非Submit类型按钮点击时不能触发表单验证的问题。

下面是解决这个问题的攻略步骤:

步骤1:为非Submit类型按钮添加点击事件

首先,我们需要为非Submit类型按钮添加点击事件。在这个点击事件中,我们可以手动触发Bootstrap表单验证插件中的验证方法,以进行表单验证。

下面是一个简单的示例代码:

<form class="needs-validation" novalidate>
  <div class="form-group">
    <label for="name-input">姓名</label>
    <input type="text" class="form-control" id="name-input" required>
  </div>
  <button type="submit" class="btn btn-primary">提交</button>
  <button type="button" class="btn btn-secondary validate-form-btn">验证</button>
</form>

在上面的代码中,我们在表单中添加了一个Submit类型按钮和一个非Submit类型按钮,其中后者的class为validate-form-btn。

接下来,我们将为validate-form-btn添加点击事件,并在该事件中手动触发表单验证插件的验证方法。代码如下:

$(document).on('click', '.validate-form-btn', function() {
  var form = $(this).closest('form');
  if (form[0].checkValidity() === false) {
    event.preventDefault();
    event.stopPropagation();
  }
  form.addClass('was-validated');
});

在上面的代码中,我们使用了jQuery的事件代理机制,为document元素添加了一个click事件。当点击按钮时,我们首先通过closest方法找到最近的form元素,然后手动调用该元素的checkValidity方法进行表单验证。如果验证失败,则阻止表单提交,并防止事件继续传递,从而避免表单上的其他按钮(如Submit类型按钮)也被点击后提交。

最后,我们为form表单添加一个was-validated类,这个类是Bootstrap自带的,用于标记该表单已进行过验证。这样,即使该表单中的其他元素被修改,我们也可以在其触发blur事件时依然进行表单验证。

步骤2:修改表单元素的默认行为

接下来,我们还需要修改表单元素的默认行为,以便在非Submit类型按钮点击时也能够进行表单验证。我们可以在表单元素的HTML标签中添加一个onkeypress事件,以便在用户敲击回车键时自动触发表单验证。同时,我们还可以使用jQuery的trigger方法,手动触发表单元素的blur事件,以便在用户离开某个表单元素时自动进行表单验证。

具体的代码如下:

<form>
  <div class="row">
    <div class="col-md-6 mb-3">
      <label for="firstName">姓名</label>
      <input type="text" class="form-control" id="firstName" placeholder="" required onkeypress="if (event.keyCode === 13) { event.preventDefault(); validateForm(); }">
      <div class="invalid-feedback">
        请输入您的姓名。
      </div>
    </div>
  </div>
  <button class="btn btn-primary" type="submit">提交</button>
  <button class="btn btn-secondary" type="button" onclick="validateForm()">验证</button>
</form>

<script>
  function validateForm() {
    $('#firstName').trigger('blur');
    $('form').addClass('was-validated');
  }
</script>

在上面的示例代码中,我们在输入框上使用了一个onkeypress事件,并在该事件中添加了一个判断语句:当触发回车键时,防止表单提交,并手动调用validateForm函数进行表单验证。

而在validateForm函数中,我们采用了jQuery的trigger方法,手动触发firstName输入框的blur事件,并同时为整个form表单添加了was-validated类,标记该表单已经进行了验证。

这样,在点击非Submit类型的验证按钮时,我们就可以通过手动触发表单验证方法和修改表单元素的默认行为来实现表单验证了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑 - Python技术站

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

相关文章

  • ascii码表(二进制 十进制 十六进制)详细介绍

    ASCII码表(二进制、十进制、十六进制)详细介绍 什么是ASCII码表? ASCII码表(American Standard Code for Information Interchange)是一种用于将字符编码为数字的字符编码标准。它最初是在美国为电传打字机而设计的,但现在已经成为计算机系统和通信设备中使用的标准字符集。 ASCII码表的编码方式 ASC…

    JavaScript 2023年5月19日
    00
  • layui lay-verify form表单自定义验证规则详解

    下面是关于“layui lay-verify form表单自定义验证规则”的详细攻略: 简介 Layui是一款非常流行的前端UI框架,其有丰富的组件和易于使用的API,而在Layui中,表单验证是非常常见和重要的功能。Layui通过lay-verify实现表单验证,可以通过自定义lay-verify来设置表单验证的规则。 自定义验证规则 在Layui中,自定…

    JavaScript 2023年6月10日
    00
  • Javascript中window.name属性详解

    让我给您详细讲解一下 “Javascript中window.name属性详解”。 什么是window.name属性? 在JavaScript中,window是指向浏览器窗口的全局对象,其中name是window对象的一个属性。window.name属性是一个字符串,通常用于存储窗口名称或标识符,它的值可以跨越页面重载和跨域名保持不变。 window.name…

    JavaScript 2023年6月11日
    00
  • vue实现复制文字复制图片实例详解

    首先,需要明确:Vue.js本身并没有提供复制文本或复制图片的API,但我们可以使用其他库来实现这些功能,如Clipboard.js或JSZip。 下面是一些详细的步骤,来说明如何在Vue.js应用中实现复制文字和复制图片的功能。 复制文字 步骤1:安装Clipboard.js 可以使用npm在Vue.js项目中安装Clipboard.js: npm ins…

    JavaScript 2023年6月11日
    00
  • js使用for循环查询数组中是否存在某个值

    使用for循环查询数组中是否存在某个值的攻略如下: 1. 确认查询目标和数组 首先,我们需要确认要查询的目标,以及要在哪个数组中查询。例如,我们要查询数字5是否存在于数组arr中。 const arr = [1, 3, 5, 7, 9]; const target = 5; 2. 使用for循环进行查询 接着,我们使用for循环遍历数组,每次将当前元素与目标…

    JavaScript 2023年6月11日
    00
  • js实现时分秒倒计时

    JS实现时分秒倒计时 实现思路 实现时分秒倒计时的基本思路如下: 获取倒计时结束时间并转换为时间戳 获取当前时间并转换为时间戳 计算差值并转换为时分秒格式 输出倒计时结果 启动定时器,每秒钟更新一次倒计时结果 代码实现 // 获取元素 const daysEl = document.getElementById(‘days’); const hoursEl …

    JavaScript 2023年5月27日
    00
  • 最常用的15个前端表单验证JS正则表达式

    对于最常用的15个前端表单验证JS正则表达式,我们可以进行如下详细讲解: 简介 前端表单验证是前端开发中需要经常用到的技术之一。而在前端表单验证中,使用正则表达式是最常见的方式之一。本文将介绍最常见的15个前端表单验证JS正则表达式,并提供详细的使用示例。 常见的15个前端表单验证JS正则表达式 以下是最常见的15个前端表单验证JS正则表达式,可以根据需要进…

    JavaScript 2023年6月10日
    00
  • JS自调用匿名函数具体实现

    Markdown 格式: JS自调用匿名函数的完整实现攻略 在 JavaScript 中,为了避免全局变量的污染以及保护代码的隐私,可以使用自调用匿名函数的方式来定义模块。下面是自调用匿名函数的具体实现方式。 基本形式 自调用匿名函数的基本形式如下: (function(){ // code here })(); 该函数定义了一个匿名函数并立即执行,参数列表…

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