jquery - 引导表单验证,需要 3 个文本字段中的 1 个?
问题描述
我正在使用带有内置表单验证的引导程序 4。我可以要求这样提交一个文本
<div class="col-6 mb-3">
<label for="field">field</label>
<input type="text" class="form-control" id="field" name="field" placeholder="" value="" required>
<div class="invalid-feedback">
Please enter.
</div>
</div>
但是,如果我在一个组中有 3 个文本字段(如上)并且用户只需要在其中一个文件上键入内容,我该怎么办。
前任
所有字段为空 - 引导验证失败。
用户在文本字段 2 和 3 中写入一些内容 - 引导验证通过。
用户在文本字段 1 中写入一些内容 - 引导验证通过。
用户在文本字段 3 中写入一些内容 - 引导验证通过。
用户只需在 3 个字段中的至少 1 个字段中写入内容即可通过验证。如果所有 3 个都是空的,则验证失败。
解决方案
我假设您有一个包含 4 个字段的注册表单,其中 3 个字段(用户名、电子邮件和联系人)之一是必需的,并且密码字段是必需的。
在您的页面中添加 jQuery validate.js
https://cdn.jsdelivr.net/npm/jquery-validation@1.19.1/dist/jquery.validate.js
HTML
<form id='register-form' action='#' method='post'>
<label>Username</label>
<input type='text' name='username' id='user_name' class='' />
<label>Email</label>
<input type='email' name='email' id='email_id' class='' />
<label>Contact No</label>
<input type='text' name='contact' id='contact_no' class='' />
<label>Password</label>
<input type='text' name='password' id='pass' class='' />
<button type='submit'>Submit</button>
</form>
jQuery
// custom validation method
$.validator.addMethod("require_any", function (value, element, param) {
var is_filled=false; // flag to check input is empty or filled
$.each(param.split(/\|/), function (i, input_id) { // split input ids
if($('#'+ input_id).val()!==''){
return is_filled=true; // if any empty input found break the loop
}
});
return is_filled;
});
// submit form and apply validation rules
$('#register-form').submit(function (e) {
e.preventDefault();
}).validate({
rules: {
username: {
require_any: 'user_name|email_id|contact_no' //pass the ids
},
email: {
require_any: 'user_name|email_id|contact_no', //pass the ids
email: true // for email validation
},
contact: {
require_any: 'user_name|email_id|contact_no' //pass the ids
},
password: {
required: true // password is required
}
},
messages: {
require_any: 'Please provide one of Username or Email or Contact',
required: 'Password field is required.' // by default message 'This field is required.'
},
submitHandler: function (form) {
// validation success code ...
}
});
推荐阅读
- asp.net - 使用锁防止重复 api 提交 ASP.NET Core Web API
- android - LinearLayout 在中间显示第二个项目,而不是在第一个项目的正下方,最后一个项目(按钮)位于屏幕的按钮上
- scala - 为什么 sbt 解析 Maven 的 settings.xml
- sql - 有没有办法在 SQL Server 中恢复以前版本的存储过程?
- c# - 用于从 c# 发送直接消息的 Instagram Api
- javascript - Backbone 子视图未呈现,“Uncaught ReferenceError: view is not defined”错误返回
- kubernetes - 我可以将一个服务帐户连接到 Kubernetes 中的多个命名空间吗?
- javascript - 无法使用用户输入刷新文本框状态,尽管使用 setState,但仍保持默认状态
- sql - 在访问中,查询仅在每个字段中有记录时才显示结果
- sudo - gitlab-ci-runner 在下次运行时避免“删除失败”错误消息(避免跟踪某些文件)