使用jQuery validate忽略某些验证规则
我正在使用jQuery验证插件对我的表单进行自定义验证。对于一种特定类型的表单,用户可以选择提交表单,也可以不提交而保存表单。我能够使用使用jQuery validate忽略某些验证规则,jquery,jquery-validate,Jquery,Jquery Validate,我正在使用jQuery验证插件对我的表单进行自定义验证。对于一种特定类型的表单,用户可以选择提交表单,也可以不提交而保存表单。我能够使用$('form.validate').validate().cancelSubmit=true禁止在onClick处理程序中对save按钮进行验证,这样就很好了 但是,编写的一个自定义验证强制要求用户必须输入合法字符(即强制要求您使用有效的ascii字符)。我想继续执行ascii验证,因为如果我不这样做,人们就可以将坏数据保存到数据库中(这会导致我们正在运行的集
$('form.validate').validate().cancelSubmit=true
禁止在onClick处理程序中对save按钮进行验证,这样就很好了
但是,编写的一个自定义验证强制要求用户必须输入合法字符(即强制要求您使用有效的ascii字符)。我想继续执行ascii验证,因为如果我不这样做,人们就可以将坏数据保存到数据库中(这会导致我们正在运行的集成的混乱)
基本上,我想强制执行所有规则,除了必需的:true。我发现,在设置窗体$('form.validate').validate({ignore:“.required”})上的验证时,可以使用ignore选项代码>但这似乎只在您最初设置验证时起作用。当我尝试在用户单击按钮时执行此操作时,它似乎什么也不做
我看过一些关于类似事情的帖子,但通常与忽略隐藏字段有关。是否有人知道我需要使用正确的语法/方法在单击按钮时忽略所需的规则?任何帮助都将不胜感激。您可以动态使用。在“保存”按钮上显示类似的内容
$('#save').click(function () {
$('#myform').find('.myclass').each(function () {
$(this).rules('remove', 'required');
});
// your code to save form
});
演示:
重要注意事项:,“仅操作通过规则选项或通过规则('add')
指定的规则”,换句话说,这是
而就在提交之前
$('#submit').click(function (e) {
e.preventDefault();
$('#myform').find('input').each(function () {
$(this).rules('add', 'required');
});
$('#myform').submit();
});
演示:您可以在所需规则中使用三元运算符来分析元素是否在html中声明了内嵌类“ignore” 样品波纹管 HTML
<div class="row">
<div class="input-field">
<input id="userName" name="userName" type="text" class="validate ignore" maxLength="10">
<label for="userName" class="required">Name</label>
</div>
</div>
CSS
$('#userName').rules("add", {
required: $('#userName').hasClass('ignore')? false: true,
messages: {
required: "This field is required!",
}
});
.required:before {
content: "*";
color: red;
position: absolute;
margin-left: -13px;
font-weight: normal;
font-size: 23px;
}
在保存之前,迭代所有项目,并将ignore类添加到您想要绕过的项目中。删除要验证的类上的所有ignore类
在提交之前,迭代所有项目,并将ignore类删除为您希望验证的类
旁注:请遵守标签上的class=“required”。这将在所有具有该类的字段旁边添加一个红色的星号,这是通过提供的css部分实现的有一些方法可以用来动态更改规则。您必须显示您的HTML和jQuery代码,使用JSFIDLE演示会更好。谢谢,Sparky!事实上,我已经开始寻找一个与你类似的答案。我试图循环遍历每个表单元素并删除所需的规则。出于某种原因,
$(this).rules('remove','required')代码>不起作用,但是$(this).rules('add',{required:false})代码>实现了我需要的结果。必填字段的验证被忽略,但ascii验证仍然有效!谢谢你的帮助@时尚,没问题。请参阅上面我的编辑<代码>规则('remove')
将不起作用,除非该规则最初是通过.validate()
中的规则
选项或通过规则('add')
方法添加的。换句话说,规则('remove')
如果使用类添加该规则,则该规则将不起作用。