2

私の質問は動的要素の JavaScript 検証と同じようですが、そこに提示された回答は私にとってはうまくいかないようです。query.validate プラグインを使用していますが、ほとんどのフォームで問題なく動作します。ただし、いくつかの入力要素を含むテーブルに行を追加するボタンがあります。フォーム入力要素を追加するために使用しているコードは次のとおりです。

var table=document.getElementById('flightlegs');
var rowCount=table.rows.length-1;
var row=table.insertRow(rowCount);
...
var cell4=row.insertCell(3);
var element4=document.createElement("input");
element4.type="text";
element4.size="3";
element4.setAttribute("required", "required");
element4.maxlength="3";
element4.name="legto";
element4.id="legto"+rowCount;
cell4.appendChild(element4);
$('#legto'+rowCount).rules('add', {required:true});
...(more of the same for other cells)...

わかりましたので、これは最善の方法ではないかもしれません (私は JavaScript が初めてです) が、必要に応じて入力フィールドを追加します。ただし、送信を押すと、それらの新しいフィールドは検証に含まれません。ここで何が欠けていますか?

4

1 に答える 1

1

jquery.validate は、「各名前の最初の要素のみを選択し、ルールが指定された要素のみを選択します」(プラグインのソース コードを見てください。この関数は、elements行番号 450 付近で定義されています)。

あなたの場合、新しく追加された各フォーム要素には name が付けられているためlegto、 jquery.validate はその名前の最初のフォーム要素のみを選択し、残りの wrt フォーム検証を破棄します。

これを修正する方法は次のとおりです

element4.name="legto"+rowCount;
于 2012-06-10T15:30:37.760 に答える