私は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;
}
}