さて、請求されたアイテムの数に応じて、承認のために各アイテムの横にチェックボックスが生成される請求書を作成しました。各チェックボックスには name がありますinvoiceApproval
。
これまでのところ、私のスクリプトは名前を持つ入力の数を数えてからinvoiceApproval
、ID = でそれぞれに ID を割り当てます。invoiceApproval[i]
それは完全に機能していますが、JavaScript フォーム検証を使用すると、すばやく簡単になります。HTML フォームでは、各 IDに を割り当てfrmvalidator.addValidation
ます (それぞれの数は name を持つチェックボックスの数と同じですinvoiceApproval
)、 ID を持つ最初のボックスのみを検証しますinvoiceApproval0
。
「for each」が最初のインスタンスでしか機能しないのはなぜですか??? ここで何が間違っていますか:
<script type="text/javascript">
var frmvalidator = new Validator("forminvoice");
var inva = document.getElementsByName("invoiceApproval");
for (var i = 0; i < inva.length;i++) {
var inc = "invoiceApproval"+[i];
inva[i].setAttribute("id",inc);
}
var inva = document.getElementsByName("invoiceApproval");
for (var i = 0; i < inva.length;i++) {
var inc = "invoiceApproval"+[i];
frmvalidator.addValidation(inc,"shouldselchk=x","You must check off each item on the right hand side of the invoice before you can submit approval.");
}
</script>
チェックボックスを生成する PHP ループは次のとおりです。
while($row = mysql_fetch_array($result))
{
echo "<input type='checkbox' value='x' name ='invoiceApproval' > Approve";
}