我使用的jQuery Validation Plugin不需要仍在运行的方法和我加入我自己的方法,像这样:jQuery的验证插件添加即使
jQuery.validator.addMethod("num", function(num) {
if(isNaN(num))
return false;
return true;
}, "Please enter a valid number");
然而,即使我没有在required
类添加到一个表单元素,如果用户没有输入任何内容,这个验证方法仍然会被调用并计算为false。但我想这样做的行为是,如果一个元素没有required
类,只有在用户输入了某个元素时才会调用它。无论如何要做到这一点?谢谢!
UPDATE
所以我上面贴实际的代码本来是一个简单的例子来说明这个问题,但是现在我忍受那是给我问题的具体例子。这里是的jsfiddle链接:
的HTML
<form method="post">
<li>
<label for="2">Mileage</label>
<input type="text" name="2" id="attr_2" class="non_neg_int"
value="" />
</li>
<li>
<label for="3">VIN (Vehicle Identification Number)</label>
<input type="text" name="3"
id="attr_3" class="vin" maxlength="17" value="" />
</li>
<li>
<input type="submit" />
</li>
</form>
的JS
$(document).ready(function() {
var validator = $("form").validate({
onkeyup: false,
onblur: true,
ignore: "",
submitHandler: function (form) { // for demo
alert('valid form submitted'); // for demo
return false; // for demo
}
});
});
jQuery.validator.addMethod("vin", function (vin) {
if (!(/^[A-HJ-NP-Z0-9]{17}$/.test(vin))) return false;
return true;
}, "Must be a valid VIN");
jQuery.validator.addMethod("non_neg_int", function (non_neg_int) {
if (isNaN(non_neg_int) || non_neg_int == null || non_neg_int == "" || non_neg_int < 0 || !is_int(non_neg_int)) return false;
return true;
}, "Must be a nonnegative integer");
function is_int(value) {
if ((parseFloat(value) == parseInt(value)) && !isNaN(value)) {
return true;
} else {
return false;
}
}
请发表您的代码的其余部分...'.validate()'随着形式的HTML。正如你描述的那样,我无法重现这个问题。 – Sparky 2013-03-15 06:14:14