我提交空表格,一个字段无效。比我更改表单中的内容(不是当前的,无效的字段)并在代码中调用我的无效字段的验证:
$('.myinvalidfield').valid()
它返回此字段有效,但不会删除它的验证错误消息。我该怎么做才能解决这个问题? (我不想手动删除消息和错误类。可以使用设置或JQuery吗?)
更新
我有两个字段,第一个元素不是必需的,第二个元素仅在第一个为空时才需要。我使用这个规则:
首先,必填字段:
required: function (element) {
var secondElement = $(selector);
var value = secondElement.val();
return value == ""; //if second (not required) field has value, that current element is not required
},
其次,不是必填字段:
required: function (element) {
var secondElement = $(selector);
if (secondElement.length == 0) return false; //becouse my forms builds dynamicly
secondElement.valid(); //invoke validation for required field
return false;
}
这个规则有效,但是如果我提交带有空字段的表单,它会向我显示一个需要字段的错误,当我更改第一个而不是必填字段时,则所有表单都有效,但错误消息不会从第二个消失元件。
答案 0 :(得分:1)
默认情况下,当字段生效时,所有错误都会自动清除。
DEMO:http://jsfiddle.net/d55hj/
修改强>:
根据OP:
“我有两个字段,第一个元素不是必需的,第二个是必需的 只有当第一个是空的时候。“
试试这个简化版......
$(document).ready(function () {
$('#myform').validate({ // initialize the plugin
rules: {
field2: {
required: function () {
return $('#field1').is(':blank');
}
}
}
});
});
<强> HTML 强>:
<form id="myform">
<input type="text" name="field1" id="field1" />
<input type="text" name="field2" id="field2" />
<input type="submit" />
</form>
DEMO:http://jsfiddle.net/d55hj/4/
否则,您必须create a custom method才能更精确地控制所有内容......
$(document).ready(function () {
jQuery.validator.addMethod('customrule', function (value, element) {
if ($('#field1').val() === "" && $('#field2').val() === "") {
return false;
} else {
$('label.error').hide();
return true;
}
}, "Please fill out field #2 when field #1 is empty");
$('#myform').validate({ // initialize the plugin
groups: { // use 'groups' option to combine both error messages into one
name: "field1 field2"
},
rules: {
field1: {
customrule: true
},
field2: {
customrule: true
}
}
});
});