私はユーザーがリストに項目を追加し続けることができるフォームを持っています。彼らがこのページを提出するとき、私はこのリストに実際に項目があることを検証したいと思います(すでに検証済みの項目ではありません)。jQuery Validator - 非フォーム項目の検証方法
<tr action="whatever">...</tr>
は、私は何をしようとしていたことと呼ばれるカスタムaddMethodを追加している:それはのように見えるように、各項目は... TRは「アクション」の余分な属性を持つ表に新しい行に追加されますアクションとして行の数を属性として数える関数:
$("#tableID").find("tr[action]").length
この長さが0より大きい場合はtrueを返し、そうでない場合はfalseを返します。
これはバリデータの呼び出しの外側で正常に動作しますが、何らかの理由で完全にスキップします。
実際にフォーム要素ではないにもかかわらず、この規則を検証する方法については、例やいくつかの洞察を実際に使用することができます。私はすでにデフォルトはメッセージやものではないためにセットアップされてい
* 注:
は、コードを縮小します。
$.validator.addMethod("validProductList", function (value, element) {
return this.optional(element) || validateProductList();
}, "You have no products in your list");
$("#processForm").click(function() {
$("#pageForm").validate({
submitHandler: function() {
$("#errors").hide();
//processPage();
},
rules: {
//other rules,
validProductList: true
}
});
});
function validateProductList() {
var isValid = false;
var useList = $("#tblAddedProducts").find("tr[action]").length;
if (useList > 0) { isValid = true; }
return isValid;
}
ル・サウ。ありがとうございました!私はそれが起こる必要があったのではないかと心配していました。別のものを検証するためにただ1つの隠しフィールドを追加するのは本当に好きではありませんでした。 – Joshua
隠しフィールドのトリックはもはや機能しません。最新のバージョンで隠れた入力を検証していません。 '