2014-12-19 96 views
0

我有一些代碼可以創建任意數量的RadioButton列表。的HTML是JQuery - 檢查所有單選按鈕是否爲「否」

<div id="ConfirmCCLChoice" class="ConfirmChoice"> 
    <span> 
    <input class="rbl" data-val="true" data-val-required="Please Select Yes or No" id="rbl" name="Confirm[i].Taken" type="radio" value="true" /> 
    Accepted 
    </span> 
    <span> 
    <input checked="checked" class="rbl" id="rbl" name="Confirm[i].Taken" type="radio" value="false" /> 
    Declined 
    </span> 
</div> 

其中,i是對應的單選按鈕列表的索引。

我需要的是一些JavaScript或jQuery檢查是否所有的單選按鈕都設置爲「否」。此時,我需要啓用文本區域,以便客戶可以解釋爲什麼所有答案都不是。 (這一點是微不足道的)。

我到目前爲止是這樣的,我只是試圖得到每個組的檢查值。但是,它所做的是爲每行運行2 *,而不是一次。 (所以我懷疑它運行的每個按鈕,而不是每個單選按鈕組

$(document).ready(function() { 
    $('#ConfirmChoice input').change(function() {   
    $(':radio').each(function() { // loop through each radio button 
     var nam = $(this).attr('name'); // get the name of its set 
     alert($(':radio[name="' + nam + '"]:checked').val()); 
    }); 
    }); 
}); 

所以,我應該如何改變這種做法,我通過每個單選按鈕組迭代,並提醒值,而不是每個單選按鈕?

+0

你可能會考慮檢查是否有任何一個按鈕沒有被設置爲'no'(使用單個非迭代JQuery選擇器更容易),並且在滿足條件時不會執行該操作... – BadZen

+0

您的代碼似乎不起作用。 (一方面,你沒有關閉ready ready,但在修復之後仍然不起作用。)把它放在jsFiddle中。 – philtune

+0

你使用的代碼是錯誤的,我也用正確的方法添加了一個答案,因爲你的方法對於你想做的事情有錯誤的開始。 –

回答

0

你可以指望檢查拒絕單選按鈕的數量對拒絕單選按鈕的數量和啓用/禁用基於該textarea的:

$('input').change(function() { 
    $('textarea').prop('disabled', !($('.ConfirmChoice').find('input[value="false"]:checked').length == $('.ConfirmChoice').find('input[value="false"]').length)) 
}) 

jsFiddle example

0

怎麼樣使用檢查選擇像這樣:

var data = "_a=add" + $.map($("input:radio:checked"), function(elem, idx) { 
        return "&"+ $(elem).attr("name") + "=" + $(elem).val(); 
       }); 

應該只返回那些檢查,如果結果爲空/ 0,則沒有進行檢查和所有單選按鈕=「否」

0

您將通過檢查收音機迭代:

$("input:radio:checked").each(function() { // loop through each radio button 
     alert($(this).val()); 
}); 

我可能會喜歡的東西是否至少包含一個「是」:

var all_no = $('input:radio:checked').filter(function() { return $(this).val() == "Yes"; }).length == 0; 

或者,要設置textarea的禁用屬性:

$('textarea').prop('disabled', 
    $('input:radio:checked').filter(function() { return $(this).val() == "Yes"; }).length != 0); 
0

所以一定要做出這樣的事情。此後everythingTrue充滿了你所需要的值:

$(document).ready(function() { 
    var everythingTrue = true; 
    $(':radio').each(function() { 
    var $that = $(this); 
    if($that.data('val') !== true) { // Depends on what should be "no" 
     everythingTrue = false; 
    } 
    }); 
}); 

但我覺得你真的想有什麼東西像下面的代碼行:

我也有什麼?我只是將上面的代碼添加到每次用戶更改任何單選按鈕時觸發的函數中。如果使用no檢查每個單選按鈕,彈出窗口可以顯示(我的命令保留在哪裏)。

$(document).ready(function() { 
    var everythingTrue = true 
    , checkValues = function() { 
     $(':radio').each(function() { 
      var $that = $(this); 
      if($that.data('val') !== true) { // Depends on what should be "no" 
      everythingTrue = false; 
      } 
     }); 
     }; 

    $(':radio').on('change', function() { 
    checkValues(); 
    if(everythingTrue == false) { 
     // Now you can show your popup here why 
     // User checked everything with 'no' 
    } else { 
     // Don't forget to hide it again if 
     // something is checked with 'yes' 
    } 
    }) 
}); 
相關問題