2013-05-04 156 views
0

如何驗證具有不同名稱屬性的單選按鈕集。使用Jquery驗證單選按鈕集

對於前:

<div id="divTest"> 
    <ul> 
      <li><input type="radio" name="rdo0"><span>Good</span></li> 
      <li><input type="radio" name="rdo0"><span>Average</span></li> 
      <li><input type="radio" name="rdo0"><span>Bad</span></li> 
    </ul> 

    <ul> 
      <li><input type="radio" name="rdo1"><span>Test</span></li> 
      <li><input type="radio" name="rdo1"><span>Test 2</span></li> 
      <li><input type="radio" name="rdo1"><span>Test 3</span></li> 
    </ul> 

</div> 

我想驗證每一個「UL」應該有一個選擇的單選按鈕,在任何情況下得到相應的消息。

+0

你到目前爲止嘗試過什麼? – 2013-05-04 12:25:13

回答

2

你應該自己嘗試...

不管怎麼說,這是一個例子:

function validate_checkbox() { 
    var error = false; 
    $('ul', '#divTest').each(function() { 
     if ($('input[type="radio"]:checked', this).length == 0) { 
      error = true; 
     } 
    });  
    return error; 
} 

$("#somebutton").on('click', function() { 
     alert(validate_checkbox() ? 'error' : 'ok'); 
}); 

http://jsfiddle.net/yiernehr/mgjwj/3/

+0

我在嘗試,以及這爲我工作。謝謝 :) – 2013-05-04 12:39:53

0

你可以嘗試這樣的事:

var radioChecked = false; 
$("ul.ContainsRadios").each(function(ind,ele){ 
    radioChecked = false; 
    $(ele).children("input[type=radio]").each(function(ind2,ele2) { 
     if (ele2.checked){ 
      radioChecked = true; 
     } 
    }); 
    if(!radioChecked){ 
     $(ele).addClass("ValidatClass"); 
    } 
}); 

與上面的代碼,唯一的問題是,你需要標註UL的包含射頻輸入,與類似的類我在代碼中提及。

+0

名稱屬性是動態生成的,所以我想要一個不包含硬編碼值的解決方案。 – 2013-05-04 12:29:56

+0

@DeepSharma檢查我的編輯。 – Nomad101 2013-05-04 12:37:33

+0

我得到了我的答案哥們。感謝您的努力:) – 2013-05-04 12:40:34

0

如果你只有單選按鈕:

var $uls = $('#divTest > ul'); 
if ($uls.find(':checked').length === $uls.length) { 
    // is valid 

如果你也有其他的輸入,那麼它是.find(':radio:checked')