【问题标题】:jquery: radio button input checked attribute is undefinedjquery:单选按钮输入选中属性未定义
【发布时间】:2018-08-21 23:22:42
【问题描述】:

我有以下顺序:

<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>

当它运行时,警报将有 'value = undefined'

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

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

【问题讨论】:

  • 为什么你的&lt;script&gt;head 和/或body 之外?

标签: jquery attributes radio-button undefined


【解决方案1】:

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

当我测试这个时

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

isChecked 是“未定义”

为了这个

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

isChecked 是真还是假

【讨论】:

    【解决方案2】:

    您遇到的问题似乎是页面加载时根本没有选中的单选按钮,因此您的 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>
    

    【讨论】:

      猜你喜欢
      • 2013-01-28
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多