2009-12-29 138 views
0

我有一個form.html:檢查是否有任何複選框在jQuery中檢查?

<div id="tag_option"> 
     <li><label for="id_customer_type">Customer type:</label> 
      <select id="id_customer_type" class="required" name="customer_type"> 
       <option value="" selected="selected">All</option> 
       <option value="NGO">NGO</option> 
       <option value="GOV">GOV</option> 

      </select> 
     </li> 

     <li> 
      <label for="id_tag">Tag:</label> <dl> 
      <dt><strong>School</strong></dt> 
      <dd><label for="id_tag_1"><input 
       name="tag" 
       value="2" 
       id="id_tag_1" 
       type="checkbox"> Private</label></dd> 
      <dd><label for="id_tag_2"><input 
        name="tag" value="3" id="id_tag_2" type="checkbox" 
        > Public</label></dd> 
     </dl></li> 

     <input id="tag_checked" name="tag_checked" value="" type="hidden"> 
     <input id="store_filter_saved" name="store_filter_saved" value="" type="hidden"> 
    </div> 

如何做到這一點?

我已經試過..

$(document).ready(function(){ 
    function updateTagChecked() { 
     var list_tag_selected = []; 
     //$("input[name^=tag_]") 
     $('#tag_option :checked').each(function() { 
      list_tag_selected.push($(this).val()); 
     }); 
     $('#tag_checked').val(list_tag_selected.join("&")) 
    } 

    $(function() { 
     $('#tag_option input').click(updateTagChecked); 
     updateTagChecked(); 
    }); 

我在這一點上,我只是想指定唯一的複選框的問題。

$('#tag_option :checked').each(function() 

我嘗試改變:

$("input[name^=tag]") 
$('div#tag_option input[name="tag"]').attr('checked') 

回答

1

之間的區別:

$(「輸入[名稱=標籤]:勾選」) 做某事的所有元素同時。它非常有用,快,如果youre做上的所有元素完全相同的操作,就像給他們所有的一類,例如

$(「#tag_option:檢查」)。每個(函數() 給多一點自由,因爲它遍歷每個元素,然後你可以給他們特定/不同的命令,一個接一個

3

如果我理解正確的,你,你想選擇具有「標籤」的名稱選中的複選框?這將做到:

$('input[name=tag]:checked') 

$("input[name^=tag]")顯然將返回所有複選框,無論他們是籤還是不和$('div#tag_option input[name="tag"]').attr('checked')返回來自名稱爲「名」第一輸入checked屬性的值。

編輯

你能有什麼區別輸出和$('#tag_option :checked')

之間$('input[name=tag]:checked')首先獲取具有「標籤」作爲name屬性值也檢查了所有input元素解釋。 「選中」元素表示處於選中狀態(即活動狀態)的單選按鈕或複選框。這將選擇匹配這些:

<input type="checkbox" name="tag" checked="checked" /> 
<input type="radio" name="tag" checked="checked" /> 

任何這些:

<input type="checkbox" name="something_else" checked="checked" /> 
<input type="checkbox" name="tag" /> 
<input type="radio" name="not_tag" checked="checked" /> 

第二獲取所有選中的元素具有的tag_option的ID的元素中。該選擇將匹配div內的所有這些input元素:

<div id="tag_option"> 
    <input type="checkbox" checked="checked" name="foo" /> 
    <input type="checkbox" checked="checked" name="bar" /> 
    <input type="radio" checked="checked" name="zyxxy" /> 
</div> 
+0

你能解釋$('input [name = tag]:checked')和 $('#tag_option:checked')。each(function() – kn3l 2009-12-29 10:26:37

+0

非常感謝您的充分解釋。 – kn3l 2009-12-30 02:20:49

相關問題