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文件是网站开发中一项非常重要的任务。在这里,我将为你提供一些调试异步加载JS的攻略和技巧。 使用Chrome DevTools调试异步加载的JS文件 Chrome DevTools 是一个非常强大的调试工具,它提供了一些重要特性来调试异步加载的 JS 文件。以下是一些示例: 1.通过Sources面板调试异步加载的JS文件 在Ch…

    JavaScript 2023年5月27日
    00
  • JavaScript实现将数组中所有元素连接成一个字符串的方法

    实现将数组中所有元素连接成一个字符串的方法有以下两种: 方法一:Array.prototype.join() JavaScript中可以使用Array.prototype.join()函数将数组中的所有元素连接成一个字符串。 使用格式:Array.join(separator) 参数说明:- separator:可选参数,指定分隔符,将数组中的元素连接成字符…

    JavaScript 2023年5月28日
    00
  • 利用递增的数字返回循环渐变的颜色的js代码

    利用递增的数字返回循环渐变的颜色是一种非常常用的js代码技巧,在很多前端开发场景中,比如渐变背景色、动态颜色等都需要用到这种技巧。 以下是详细的攻略: 步骤一:编写颜色渐变函数 我们需要编写一个函数,接受一个数字参数,根据这个数字参数返回一个渐变的颜色值。下面是一段伪代码,可以帮助我们理解这个函数的基本思路: function gradientColor(i…

    JavaScript 2023年6月11日
    00
  • JavaScript html5利用FileReader实现上传功能

    这里提供一个简单的JavaScript HTML5利用FileReader实现上传文件的攻略。 前言 很多时候我们需要上传文件到服务器。HTML5中提供了<input type=”file”>标签来实现文件上传。但是这种方法有一个限制:无法对文件进行预览或处理。为了解决这个问题,我们可以使用FileReader API。FileReader AP…

    JavaScript 2023年5月27日
    00
  • js中时间格式化的几种方法

    讲解js中时间格式化的几种方法的攻略如下: 一、JavaScript中的时间表示 在JavaScript中,时间是用毫秒数来表示的。毫秒数是从1970年1月1日00:00:00 UTC开始计算的,也被称为1970年纪元。这个时间点被称为UNIX时间。UNIX时间是一个标准时间,所有的计算机系统都使用它来存储时间数据。 二、格式化时间的方法 在JavaScri…

    JavaScript 2023年5月27日
    00
  • js clearInterval()方法的定义和用法

    下面是关于“js clearInterval()方法的定义和用法”的完整攻略: clearInterval()方法的定义和用法 定义 clearInterval()是用于关闭由setInterval()方法设置的定时器的方法,它的语法如下: clearInterval(intervalID) 参数intervalID是通过setInterval()方法返回的…

    JavaScript 2023年6月11日
    00
  • Javascript 错误处理的几种方法

    下面是关于 Javascript 错误处理的几种方法的详细攻略。 1. try-catch try-catch 是一种常用的 Javascript 错误处理方式,用于捕捉运行时的错误并进行相应的处理。其中,try 代码块用于执行可能会产生异常的代码,如果产生了异常则会被 catch 代码块捕获,从而进行错误处理。 下面是一个示例代码,演示了 try-catc…

    JavaScript 2023年5月28日
    00
  • Javascript toExponential 方法

    JavaScript 中的 toExponential() 方法用于将数字转换为指数形式的字符串。该方法返回一个字符串,其中包含指数形式的数字,可以指定小数点后的位数和指数的位数。在本教程中,我们将详细介绍 toExponential() 方法的使用方法。 toExponential() 方法的基本语法如下: number.toExponential(fra…

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