4

我有以下内容并按此顺序:

<script type="text/javascript">
  $(document).ready(function(){
     var overwrite = $('#itemList input:radio:checked').val() 

     alert('value = '+ overwrite);
  });
</script>
<body>
  <form ..... >
    <div id="itemList">
    Overwrite?
    <input type="radio" value="Yes" class="overWrite" name="overWrite" >Yes
    <input type="radio" value="No" class="overWrite" name="overWrite" >No
    </div>
  </form>
</body>

当它运行时,警报将具有“值 = 未定义”

但是,如果我将 javascript 放在 div (或正文)之后,警报会返回 'value = Yes'

为什么jquery无法识别页面开头的类型radio?如果我创建一个 type = 'hidden',jquery 可以读取/识别页面开头的值。当 type = 'radio' 时,行为不同

4

2 回答 2

7

我对“未定义”有类似的问题。

当我测试这个

var isChecked = $('#itemList').attr('checked');

isChecked 是“未定义”

为此

var isChecked = $('#itemList').prop('checked');

isChecked 是真还是假

于 2014-07-16T19:22:52.657 回答
5

您遇到的问题似乎是页面加载时根本没有选中的单选按钮,因此您的 jquery 返回一个空对象。

这将默认检查“否”并返回正确的值。所以你的javascript在技术上是正确的,你只需要检查空值

<head>
<title>jQuery Tester</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>

</head>

<body>
    <div id="itemList">
    Overwrite?
    <input type="radio" value="Yes" class="overWrite" name="overWrite"  />Yes
    <input type="radio" value="No" class="overWrite" name="overWrite" checked="checked" />No 
    </div>


<script type="text/javascript">
  $(document).ready(function(){
     var overwrite = $('#itemList input:radio:checked').val();

     alert('value = ' + overwrite);
  });
</script>
</body>
</html>
于 2010-01-13T23:59:53.160 回答