2013-02-18 23 views
1

我正在測驗,其中每一個問題有一組單選按鈕的,是這樣的:確定是否所有的單選按鈕基具有一個檢查框

<input type="radio" name="quid16" value="answid53" />Answer 1 : foo 
<input type="radio" name="quid16" value="answid54" />Answer 2 : bar 
<input type="radio" name="quid16" value="answid55" />Answer 3 : joe 
<input type="radio" name="quid16" value="answid56" />Answer 4 : blogs 

每個組獲得的ID,諸如上文quid16;這個ID是由PHP生成的,並且不是固定的。

當我驗證表單提交時,我需要檢查是否所有的組都有一個選中的單選按鈕。

問題是,我不知道組ID預先。我將如何解決這個問題?

+0

您是否使用jQuery驗證插件,或者是你從頭開始做這個? – Sparky 2013-02-18 23:56:01

+0

找到所有單選按鈕。迭代它們,使用單選按鈕名稱在最初爲空的對象中創建一個屬性。如果該按鈕被選中,則將該屬性的值設置爲「true」,否則將其保留爲空。完成後,具有「null」值的對象中的屬性是未選中的單選按鈕。 – Pointy 2013-02-19 00:04:43

回答

7

你可以把所有的無線電盒,以 「英鎊」 開始,然後:

  1. 過濾器的唯一名稱
  2. 過濾器的檢查值
  3. 比較1. VS 2.

代碼:

var radios = $('[name^=quid]'), 
names = $.unique(radios.map(function() { 
    return this.name; 
})), 
checked = radios.filter(function() { 
    return this.checked; 
}); 

if (names.length == checked.length) { 
    alert('all answers are checked'); 
} 
+0

我認爲你想'''而不是'|'雖然可能工作。 – Pointy 2013-02-19 00:05:46

+1

@Pointy其實有更多的jQuery'ish,我沒有看到之前:) – 2013-02-19 00:14:53

+0

謝謝傑克。我不知道名稱選擇器的存在。你的解決方案幫助我渡過難關。 – Amelia 2013-02-19 10:56:09

-1
if ($('input:radio').is(':checked')) {function()} else {function()} 
+1

我不認爲這真的成爲問題的核心。 – Pointy 2013-02-19 00:03:35

+0

「但是由於這些指標可能因頁面不同而不同......」我認爲頁面上的廣播組數不能超過1組。 – starowere 2013-02-19 00:06:32

0

使用Attribute Starts With Selector獲取以「quid」爲前綴的元素,並使用jQuery.is選擇:checked的元素。例如:

$('[name^=quid]').is(':checked'); //Returns true if any radio buttons are 'checked' 

下面是一個例子的jsfiddle:http://jsfiddle.net/SDXSf/

<input type="radio" name="quid16" value="answid53" />Answer 1 : foo <br/> 
<input type="radio" name="quid16" value="answid54" />Answer 2 : bar <br/> 
<input type="radio" name="quid16" value="answid55" />Answer 3 : joe <br/> 
<input type="radio" name="quid16" value="answid56" />Answer 4 : blogs <br/> 
<br/> 
<button>Test</button> 
<script type="javascript"> 
    $(function(){ 

    function isOneChecked(selector) 
    { 
     return $(selector).is(':checked') 
    } 

    $('button').click(function(){ 
     alert(isOneChecked('[name^=quid]') ? 'Validated' : 'Please select a radio button'); 
    }); 
}); 
</script> 
+0

等一下......你想按'quid'後面的數字分組嗎?那麼這是否意味着無線電組#1將是quid01,無線電組#2將是quid02,依此類推? – 2013-02-19 00:16:02

+0

傑克擊敗了我。 – 2013-02-19 00:20:09

+0

是的,這將是分組。然而,組#1並不一定是quid01,它可以是quid15 quid169等等。 – Amelia 2013-02-19 10:39:18

相關問題