2013-02-14 53 views
0

我想我們jquery來檢測是否在同一組中的另一個文本框被選中。下面的代碼顯示了我在檢查高級框時如何檢索組名,並使用它來查看是否檢查了附帶的基本框。問題在於,無論基本複選框的情況如何,「basicTrue」總是被分配「未定義」。難以將變量插入jquery屬性標識

<div id="boxes"> 
<input style="text-align:center;" type="checkbox" name="group1" value="Basic"> 
<input style="text-align:center;" type="checkbox" name="group1" value="Advanced"> 
<input style="text-align:center;" type="checkbox" name="group2" value="Basic"> 
<input style="text-align:center;" type="checkbox" name="group2" value="Advanced"> 
</div> 

$("#boxes").contents().find(":checkbox").bind('change', function(){   
val = this.checked; 
var $obj = $(this);  
if($obj.val()=="Advanced"){ 
var group = $obj.attr("name"); 
var basicTrue = $('input[name=group][value="Basic"]').prop("checked"); 
if(basicTrue) 
{ 
    //Do stuff 
} 
else 
{ 
    $obj.attr('checked', false); 
} 
} 

此代碼是概念證明我用來證明代碼格式化這樣的作品,它返回「組1」中的「基本設置」複選框的狀態。

var basicTrue = $('input[name="group1"][value="Basic"]').prop("checked"); 

我知道變量「group」被給出正確的名稱:group1例如。爲什麼在代碼中使用這個變量是不行的?

回答

1

這些都是變量,他們需要concentenated到在選擇字符串,像這樣:

$('input[name="' + group + '"][value="Basic"]').prop("checked"); 

的簡化版本:

$("#boxes input[type='checkbox']").on('change', function(){   
    var bT = $('input[name="'+ this.name +'"][value="Basic"]').prop("checked"); 

    if(this.value == "Advanced" && bT) { 
     //Do stuff 
    } else { 
     $(this).prop('checked', false); 
    } 
}); 
+0

謝謝你,寫的問題後,抓住它一個變量不屬於一個字符串。不過,不需要添加引號。 – Rorrik 2013-02-15 23:38:17