我使用的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