2013-06-18 74 views
0

我有一個表格,使用php while循環顯示一個表中的名稱列表,並且旁邊的每個名稱都是複選框,以便用戶可以選擇2個名稱並排顯示在下一頁上。如何統計在jquery中打勾的數字複選框?

我正在使用jquery表單驗證程序,如果在移動到下一頁之前選擇多於或少於2個名稱,我希望它顯示一條消息。驗證適用於簡單的事情,如直接比較字符串等,但我無法得到這個工作,我懷疑這是因爲我試圖獲得檢查複選框的數量的方式。

這是形式...

<form method="post" onsubmit="return validation()" action="merge_accounts.php" 
     name="merge_form" id="merge_form" > 
    <table> 
     <?php while ($row = mysqli_fetch_array($sql)){ 
       $account_id = $row['id']; ?> 
      <tr> 
       <td><input type="checkbox" id="merge[]" name="merge[]" value="<? echo $row['id']; ?>" style="margin-left:10px" /></td> 
       <td class="results_cell" style="padding-left:0px"> 
        <a title="<? $row['name']; ?>" href="account_info.php?id=<? echo $account_id; ?>" onClick="this.document.id.submit();"><? 
        if(strlen($row['name']) > 45){ 
         echo substr($row['name'], 0, 45).'...'; 
        } else { 
         echo $row['name']; 
        }?></a> 
       </td> 
      </tr> 
      <tr> 
       <td colspan="2" class="no_hover"> 
        <input type="submit" class="advanced_buttons" 
        style="margin: 0px 5px 3px 10px; height:30px; width:60px" 
        name="merge_submit" value="Merge" /> 
       </td> 
      </tr> 
     </table> 
</form> 

jQuery的...

<script> 

    function validation() 
    { 
     var num = document.forms["merge_form"]["merge"].length; 
      if(num != 2) 
      { 
       $.msgbox("Please select 2 items", {type:"info", 
        buttons: [ 
         {type: "submit", value: "OK"} 
        ] 
       }); 
       return false; 
      } 
    } 

</script> 

目前的形式只是忽略了驗證功能,無論提交多少複選框被選中

+3

啊請'Java的== javascript'! – HamZa

+0

@HamZa,comment!==建設性的評論 – tatty27

+0

@ tatty27,實際上,是的,這是一個非常有建設性的評論,如果它驅動回家的事實,即Java和JavaScript是兩個完全不同和不相關的語言,你似乎無法理解的一點儘管完全沒有任何Java,但您將其標記爲「java」文章。 –

回答

3

試試:

$("#merge_form input:checked").length 
+0

請注意,':checked'等價於'*:checked'(這意味着jQuery /'document.querySelectorAll()'正在通過'#merge'中的每個*元素查看它是否被檢查;在這種情況下,[docs](http://api.jquery.com/checked-selector/)明確建議在選擇器中指定標記名稱或其他標識符)。 –

+0

@DavidThomas:感謝您的信息。我今天學到了新東西 – mrsrinivas

+0

(我應該已經更清楚了,但是你需要:'#merg input:checked',否則你正在''merge'內尋找'#merge'內的':checked'元素。 ,它將不返回任何元素,因爲根據定義,'input'是一個void/empty元素。畢竟,jQuery選擇器遵循與CSS選擇器相同的規則。) –