2015-09-10 137 views
2

我想檢查複選框使用jquery但無濟於事。以下是代碼。複選框沒有通過jQuery檢查

$(document).ready(function() { 
    var url_brand_alias = $("#hidden_brand_alias").val(); //gives a,b 
    var url_brand_arr = url_brand_alias.split(','); 
    $.each(url_brand_arr, function(key, value) { 
     $('input.Brand[rel="'+value+'"]').attr('checked', true); 
    }); 
}); 

複選框HTML:

<div class="panel-body"> 
    <div class="form-group"> 
     <label class="filters-type"> 
      <input type="checkbox" rel="a" value="1" class="Brand">a</label> 
     </div> 
    <div class="form-group"> 
     <label class="filters-type"><input type="checkbox" rel="b" value="2" class="Brand">b</label> 
    </div> 
</div> 

我同時使用ATTR和道具,但無濟於事嘗試。我在控制檯中也沒有任何錯誤。歡迎任何幫助/建議。提前致謝。

+5

向我們展示'url_cat_arr'的值。這是一個錯字嗎?這是否意味着任何機會都會成爲'url_brand_arr'? –

+0

你可以在你的代碼中包含一個小提琴或JSBin嗎? – Drown

+0

對不起,這只是錯字。 –

回答

0

只需添加一條簡單的線url_brand_alias = "a,b";即可獲得所需的結果,表明$("#hidden_brand_alias").val(); //gives a,b實際上並不像預期的那樣返回"a,b"。考慮調查一下。

$(document).ready(function() { 
 
    var url_brand_alias = $("#hidden_brand_alias").val(); //gives a,b 
 
    url_brand_alias = "a,b"; 
 
    var url_brand_arr = url_brand_alias.split(','); 
 
    $.each(url_brand_arr, function(key, value) { 
 
     $('input.Brand[rel="'+value+'"]').attr('checked', true); 
 
    }); 
 
});
<div class="panel-body"> 
 
    <div class="form-group"> 
 
     <label class="filters-type"> 
 
      <input type="checkbox" rel="a" value="1" class="Brand">a 
 
     </label> 
 
    </div> 
 
    <div class="form-group"> 
 
     <label class="filters-type"> 
 
      <input type="checkbox" rel="b" value="2" class="Brand">b 
 
     </label> 
 
    </div> 
 
</div>

+0

謝謝你所有的迴應和時間。我在文檔就緒功能取消選中複選框時犯了一個錯誤。我嘗試使用setTimeout()函數檢查複選框後發現解決方案。使用setTimeout()函數檢查了所有需要的複選框。所以,我搜索了這個複選框是否在某個時候沒有被選中,這是真的。 –

0

要改變複選框狀態使用jQuery的幫助下,你應該使用prop

$(elem).prop("checked", true) 

來獲取值,使用prop()太:

$(elem).prop("checked") 

這裏的jQuery prop文檔:http://api.jquery.com/prop/