2015-11-03 122 views
1

我的反饋表格出現問題。檢查一組電臺是否至少有一個選中

我只是想用jQuery或Javascript來驗證,每一組的單選按鈕始終一個按鈕來選擇,然後才能提交表單。

這是我的代碼從我的form.html。

<form id='form' method='POST' action='validate.php'> 
    <table> 
     <!-- Table header --> 
     <tr> 
      <th>&nbsp;</th> 
      <th>Always</th> 
      <th>Often</th> 
      <th>Rarely</th> 
      <th>Never</th> 
     </tr> 
     <!-- Group One --> 
     <tr> 
      <th>Dummy Text 1</th> 
      <th><input class='radio' type='radio' name='item[0]' value='always'></th> 
      <th><input class='radio' type='radio' name='item[0]' value='often'></th> 
      <th><input class='radio' type='radio' name='item[0]' value='rarely'></th> 
      <th><input class='radio' type='radio' name='item[0]' value='never'></th> 
     </tr> 
     <!-- Group two --> 
     <tr> 
      <th>Dummy Text 2</th> 
      <th><input class='radio' type='radio' name='item[1]' value='always'></th> 
      <th><input class='radio' type='radio' name='item[1]' value='often'></th> 
      <th><input class='radio' type='radio' name='item[1]' value='rarely'></th> 
      <th><input class='radio' type='radio' name='item[1]' value='never'></th> 
     </tr> 
     <!-- End of table --> 
    </table> 
</form> 
<button class='buttons' onclick='subForm()' name='submit'>Send Feedback</button> 
<script> 
    function subForm() { 
     //Code 
    } 
</script> 

但我不知道我應該用來檢查是否檢查無線電按鈕。

我想document.getElementsByName但這給我回不定值

由於提前

回答

0

這將返回檢查單選按鈕的數量:

$('input:radio:checked').length 

檢查它是否等於單選按鈕組的數目。 (。在您的例子中爲兩個)

Fiddle

0

你可以添加一個類各組單選按鈕,然後用getelementsbyclass,或queryselectorall(兼容舊版本瀏覽器) 。根據您要支持的內容,您還可以考慮在單選按鈕上使用HTML5「required」屬性。這將適用於大多數比IE8更新的瀏覽器,並且只需要最少的編碼。

我不能評論,所以我會澄清的是,這裏張貼在此刻其他的解決辦法是行不通的,因爲它會檢查,以確保在頁面上至少一個單選按鈕被選中,這意味着用戶可以如果有多組單選按鈕,請提交不完整的表格。他的代碼看起來是功能性的,否則,只需爲每組單選按鈕創建一個類。

+0

你有'getelementsbyclass'數組嗎?或者你得到了什麼輸出? – Lino

+0

噢,你的意思是'getElementsByClassName',因爲你將無法正常工作:) – Lino

+0

是的,我的意思是geElementsByClassName,我很懶惰,我通常依賴於我的開發環境/代碼編輯器自動完成這樣的事情對我來說。 –

0

我覺得這是最好的選擇:

var selectedCount = 0; 
$('.radio').each(function(){ 
    if($(this).attr("checked", "checked")){ 
     selectedCount++; 
    } 
}) 
+0

我可以再比較各組的大寫金額我有selectedCount? – Lino

+0

試過了,沒有用。我得到所有按鈕組合的數量,而不僅僅是ckecked的 – Lino

0

嘗試這種解決方案:

function subForm() { 

    var valid = true; 
    //for every row 
    jQuery("tr").each(function(idx, elem) { 
     //checks only rows with radio inputs inside 
     if ($(this).find('input[type=radio]').length) { 
      //if there are no radios checked then form is not valid 
      if (!$(this).find('input[type=radio]:checked').length) { 
       valid = false; 
      } 
     } 
    }); 
    console.log(valid); 
    if (valid) { 
     //submit form 
    } 
} 

變量「有效」指的是整體形式是有效的(至少一個單選按鈕每個組中選擇的)。

這裏有一個jsfiddle

相關問題