2012-11-28 30 views
0

好吧,我已根據發票項目的數量創建了一張發票,它會在每個發票旁邊生成一個複選框以供審批。每個複選框將具有名稱invoiceApprovalJavascript - 對於每個名稱集ID等於名稱[i]並驗證

到目前爲止,我的腳本將計數,看看有多少投入使用名稱invoiceApproval然後分配一個ID給每一個與ID = invoiceApproval[i]

即可以正常使用,但現在當我使用JavaScript Form Validation : quick and easy! in HTML Forms來分配frmvalidator.addValidation每個ID(每個ID的數量等於多少個複選框的名稱爲invoiceApproval),它只驗證ID爲invoiceApproval0的第一個框。

爲什麼我的'每個'只適用於第一個實例?我在做什麼錯在這裏:

<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"; 
} 
+0

也可能有助於顯示生成的HTML的示例。 – Jeff

+0

出於興趣,是否有任何特殊原因使用'[i]'而不是'i'? – Jeff

+0

爲什麼不在PHP中添加'i'? –

回答

0

庫的代碼使用

var itemobj = this.formobj[itemname]; 

檢索表單項。後來它確實

if (itemobj.length && isNaN(itemobj.selectedIndex)) 
{ 
    itemobj = itemobj[0]; 
} 

這意味着,如果有多個具有相同名稱的項目,它將始終選擇第一個。取名字作爲你的表單域的參考是這樣的不好的做法

唯一的解決方案(如果你想使用這個庫,但我會遠離它,它真的寫得很差)是讓你的名字不是相同。

旁註

var inc = "invoiceApproval"+[i]; 

是它創建一個帶有單個值的數組,然後調用toString被調用就可以了,toString(幸運的是)返回單值數組作爲值本身。擺脫這些括號,它應該是

var inc = "invoiceApproval"+i;