我正在使用jQuery Validation Plugin,我正在添加自己的方法,如下所示:
jQuery.validator.addMethod("num", function(num) {
if(isNaN(num))
return false;
return true;
}, "Please enter a valid number");
但是,即使我没有将required
类添加到表单元素,如果用户没有输入任何内容,仍然会调用此验证方法并评估为 false。但我希望行为是,如果元素没有required
类,则仅在用户输入某些内容时才调用它。有没有办法做到这一点?谢谢!
更新
因此,我在上面发布的实际代码是一个简单的示例来演示问题,但是现在我提出了给我带来问题的具体示例。这是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;
}
}