jQuery val()从多个单选按钮名称集中检索不正确的值

时间:2012-08-01 03:40:55

标签: jquery radio-button

我正在使用jQuery .val()从包含两组单选按钮的表单中提取数据结果。

<!DOCTYPE HTML>
<html>
    <head>  

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>

    <script type="text/javascript">

    function userPrefsSubmitted() {
    console.log(  $('form input[@name=cssOn]:checked').val()   );
    console.log(  $('form input[@name=halfFramesOn]:checked').val()   );
    }   
    </script>

</head>
<body>  
<p>Choose User Prefs</p>
<form>
    <p>Transitions</p>
    <div><input type="radio" name="cssOn" value=true>True</div>
    <div><input type="radio" name="cssOn" value=false>False</div>
    <p>Half Frames</p>  
    <div><input type="radio" name="halfFramesOn" value=true>True</div>
    <div><input type="radio" name="halfFramesOn" value=false>False</div>
    <br/><br/>
    <input class="submitButton" type="button" onClick="userPrefsSubmitted()" value="tap when done" />
</form> 

</body>
</html>

如果我选择了fasle然后是true并按下按钮,则console.log显示false false

这让我疯了,我在这个论坛以及互联网上搜索但没找到答案。我哪里错了?

4 个答案:

答案 0 :(得分:8)

没有@。你可以轻松地做到:

function userPrefsSubmitted() {
  console.log(  $('form input[name=cssOn]:checked').val()   );
  console.log(  $('form input[name=halfFramesOn]:checked').val()   );
}   

答案 1 :(得分:2)

或试试这个:工作演示 http://jsfiddle.net/4T5r3/

注意:http://www.electrictoolbox.com/at-name-selector-removed-jquery/

没有@的这些选择器的使用也适用于jQuery 1.2分支。我不确定它是否适用于旧版本。

<强>码

function userPrefsSubmitted() {
    alert($('form input[@name=cssOn]:checked').prop('value'));
    alert($('form input[@name=halfFramesOn]:checked').prop('value'));
}​

J 1.2&gt;

  function userPrefsSubmitted() {
        alert($('form input[name=cssOn]:checked').prop('value'));
        alert($('form input[name=halfFramesOn]:checked').prop('value'));
    }​

工作图片 当选择真实

enter image description here 工作图片 选择错误时

enter image description here

答案 2 :(得分:1)

function userPrefsSubmitted() {
console.log(  $('form input[name=cssOn]:checked').val()   );
console.log(  $('form input[name=halfFramesOn]:checked').val()   );
}   

答案 3 :(得分:0)

也请  试试$(":checked").val()

而不是

$('form input[@name=halfFramesOn]:checked').val()

这将只返回所有选中的单选按钮。