JQuery 验证 - 在表单中添加/删除错误 css 类
JQuery Validate - Add/remove error css class in the form
我想在表单中添加/删除error
css 类。
$("#my-form").validate({
invalidHandler: function (event, validator) {
// 'this' refers to the form
var errors = validator.numberOfInvalids();
if (errors) {
$(this).addClass("error");
} else {
$(this).removeClass("error");
}
},
});
这种方法的问题:当我使用 $("#my-form").validate().form()
来验证表单时,它会自动将error
css 类添加/删除到每个控件(例如输入)。通过添加invalidHandler
这将额外添加/删除整个表单的error
css类。
一旦我validator.resetForm()
清除消息,这将从子控件而不是从窗体重置 css 类。我希望它通过使用绑定或任何其他触发此操作的处理程序(从表单中删除 css 类)自动从表单中删除 css 类。
如何解决此问题?
来源: http://jqueryvalidation.org/validate/
更新这里有一个愚蠢的例子:http://jsfiddle.net/F2Re4/和我手动删除了类(在这个例子中,我称这个类为:"错误形式")
查看 jsFiddle 的标记,
<input type="button" onclick="validate()" value="Validate"></input>
<input type="button" onclick="resetForm()" value="Reset Form"></input>
1) input
元素没有结束标记。 根据您的doctype
,它们可能需要也可能不需要"自关闭",但从来没有任何</input>
标签这样的东西。
2)内联JavaScript在使用jQuery时是丑陋和不必要的。 onclick
处理程序可以很容易地删除并替换为jQuery .on('click')
...
$('#reset').on('click', function () {
var form = $("#myForm");
form.validate().resetForm();
});
3) 您不需要将validate
功能附加到"验证"按钮。 只需将按钮更改为type="submit"
,它将自动验证。 否则,您将需要另一个.on('click')
处理程序和内部的.valid()
来触发验证测试。
<input type="submit" id="validate" value="Validate" />
<input type="button" id="reset" value="Reset Form" />
引用 OP:
。
validator.resetForm()
清除消息,但此invalidHandler
永远不会被调用,并且"错误"css 类仍然存在于表单中。
根据文档,仅当表单无效时才调用invalidHandler
。 如果重置表单,表单将不再无效。 因此,invalidHandler
中使用的逻辑是有缺陷的。
var errors = validator.numberOfInvalids();
if (errors) {
$(this).addClass("form-error");
} else {
// this will never be called because invalidHandler
// is never called when there are no form errors
//$(this).removeClass("form-error");
}
此插件中没有任何内容会自动添加/删除<form>
元素本身的类。 该插件仅自动添加/删除各种数据输入元素中的类。 因此,如果手动将类添加到 <form>
元素,则必须在重置窗体时手动删除它。
$(document).ready(function () {
$("#myForm").validate({
// your rules & options
});
$('#reset').on('click', function () {
var form = $("#myForm");
form.validate().resetForm(); // reset validation on form
form.removeClass("form-error"); // remove error class from form
});
});
演示:http://jsfiddle.net/F2Re4/11/
使用 .valid()
测试表单。请参阅有效()的单击函数
validate = function(){
$("#myForm").valid();
};
resetForm = function(){
var form = $("#myForm").validate();
form.resetForm();
};
演示:http://jsfiddle.net/tive/U2XKx/
此外,使用 w3schools 上看到的reset()
来清除文本值。
- PHP 删除错误
- 单选按钮单击删除错误消息 jQuery
- JQuery 验证 - 在表单中添加/删除错误 css 类
- 删除错误.MongooDB + Express.传入的参数必须是 12 个字节的单个字符串或 24 个十六进制字符的字符
- 表单验证:在输入中按键后删除错误
- 如何在调用服务器请求时删除错误
- jQuery 验证错误放置 - 更正后无法删除错误
- 拼接从 AngularJS 中的 ng-repeat 中删除错误的对象
- 如何从电子邮件格式检查器代码中删除错误文本
- 从数组中删除错误的值会留下空值.如何改进我的代码
- 如果onclick按钮,在js中删除错误信息
- 删除错误-无法处理绑定“foreach”
- 不能删除数组项,总是删除错误的项
- jqGrid后删除错误
- 如何根据类名删除错误
- 在弹出窗口中onfocus以删除错误
- 如何隐藏/删除错误信息后显示它给用户后几秒钟在javascript
- Javascript:表单验证-从更正字段中删除错误消息
- Javascript从DOM中删除错误的元素
- 从jQuery validate中重置窗体/删除错误类