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

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日

相关文章

  • JS实现百度搜索框

    下面我来为你详细讲解 “JS实现百度搜索框”的攻略。 准备工作 在代码实现之前,我们需要先对百度搜索框的结构进行分析。可以发现,百度搜索框包含一段文本输入框和一个搜索按钮。在代码编写前,需要创建两个HTML元素分别代表文本输入框和搜索按钮,并设置相关属性。 <input type="text" name="search&q…

    JavaScript 2023年6月10日
    00
  • 使用php操作xml教程

    接下来我将为您详细讲解如何使用PHP操作XML文档的完整攻略。 1. 安装PHP SimpleXML模块 在使用PHP操作XML文档之前,我们需要确保已经安装了PHP SimpleXML模块。可以通过执行以下代码确认是否已安装: <?php phpinfo(); ?> 查询结果中有SimpleXML模块则表示已安装,否则需要手动安装该模块。 2.…

    JavaScript 2023年6月11日
    00
  • 获取表单控件原始(初始)值的方法

    获取表单控件原始值的方法,通常是用于表单的重置操作或是表单提交前的数据检查。以下是一些常见的方法: 1. 通过JavaScript获取表单元素的value属性 JavaScript提供了访问文档元素的属性的方法,包括表单元素的value属性。通过获取表单元素的value属性,可以得到该元素的初始值。 示例1: <form> <input t…

    JavaScript 2023年6月10日
    00
  • JS多物体实现缓冲运动效果示例

    JS多物体实现缓冲运动效果示例是一个相对复杂的动画效果,需要涉及到多个物体的运动,同时需要使用缓冲运动算法,可以通过以下步骤进行实现: 1. HTML结构 首先需要在HTML中添加每个物体的标签,可以使用div标签,为每个标签添加一个id用于在JS中操作。 <div id="box1"></div> <div…

    JavaScript 2023年6月11日
    00
  • JS Map 和 List 的简单实现代码

    当我们在使用JavaScript的时候,有时候需要使用一些数据类型来进行操作和处理。在这些数据类型中,Map和List就是两个常用的数据类型之一。 什么是Map和List 在JavaScript中,Map是一种用于存储键值对的集合。Map中的键可以是任意类型的值,如字符串、数字甚至是对象,同样的值可以对应于不同的键。而List则是一种由一列元素组成的有序集合…

    JavaScript 2023年6月10日
    00
  • C# winform实现登陆次数限制

    让我来详细讲解一下“C# winform实现登陆次数限制”的完整攻略。 问题描述 在C# WinForm项目中,我们希望实现一个登陆次数限制功能。具体来说,如果用户在一定次数内登陆失败,则禁止该用户登陆,直到一定时间后再次尝试登陆。 解决方案 我们可以通过以下步骤来实现登陆次数限制的功能: 1. 创建一个配置文件 我们可以创建一个配置文件,用来保存登陆次数限…

    JavaScript 2023年6月11日
    00
  • JavaScript RegExp 对象用法详解

    JavaScript RegExp 对象用法详解 JavaScript 的正则表达式 (RegExp) 提供了一种强大的文本匹配能力,可以极大地简化对字符串的操作。在本篇文章中,我们将详细介绍 JavaScript RegExp 对象的用法,包括创建 RegExp 对象、访问 RegExp 对象属性、使用 RegExp 对象方法等。 创建 RegExp 对象…

    JavaScript 2023年6月10日
    00
  • JS去掉字符串中所有的逗号

    要去掉一个JavaScript字符串中的所有逗号,可以使用replace()方法。以下是详细步骤: 步骤1:使用正则表达式查找所有的逗号,并替换为一个空字符串。在replace方法中,正则表达式为/,/g,其中第一个斜杆表示开始正则表达式,中间的逗号表示要替换的字符,第二个斜杆表示正则表达式的结束,而字母”g”表示全局标志,指示替换所有匹配的字符串。 步骤2…

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