jquery:单选按钮输入检查属性未定义

发布于 2024-08-17 09:45:09 字数 701 浏览 3 评论 0原文

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

<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(或正文)之后,警报会返回“值=是”

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

I have the following and in this order:

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

when it runs, the alert will have 'value = undefined'

BUT, if I put the javascript after the div (or body), the alert comes back with 'value = Yes'

Why does jquery not recognize the type radio at beginning of page? If I create a type = 'hidden', jquery can read/recognize the value if at beginning of page. When type = 'radio', behaviour is different

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

羁绊已千年 2024-08-24 09:45:09

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

当我测试时,

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

isChecked 是“未定义”

,因此

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

isChecked 是 true 或 false

I had similar problem with 'undefined'.

when I tested this

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

isChecked was 'undefined'

and for this

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

isChecked is true or false

往事随风而去 2024-08-24 09:45:09

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

默认情况下,这将检查“否”并返回正确的值。所以你的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>

Problem you're running into seems to be that there are simply no checked radio buttons on page load so your jquery returns a null object.

This will check "no" by default and returns the correct value. So your javascript is technically correct, you just need to check for null values

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文