【问题标题】:jquery if statement radio buttons processes every timejquery if 语句单选按钮每次都处理
【发布时间】:2013-08-03 19:04:01
【问题描述】:

我有如下一对单选按钮

  <label class="radio inline" for="radios-0">
     <input type="radio" name="newsletter" id="radios-0" value="1" checked="checked">
        Yes
  </label>
  <label class="radio inline" for="radios-1">
     <input type="radio" name="newsletter" id="radios-1" value="0">
        No
  </label>

它们是通过 ajax 发布的表单的一部分,并且脚本运行良好。我有一个额外的部分来检查他们是否在单选按钮上选择了是或否,如果是,则订阅邮件列表。但是无论选择是或否,它仍然会进入列表。

是因为他们是同名的吗?但是如果不是同名,都可以检查。

if ($('input:radio[name="newsletter"]').is(':checked') && $('input:radio[name="newsletter"]').val == 1) {
    //add email to newsletter list
}

【问题讨论】:

  • 谢谢你这已经解决了,很遗憾你评论而不是回答,因为我现在不能选择它作为答案。
  • @PhilNewell 如果您切换到input#radios-0,则删除第二个条件。第一个就够了,反正第二个都是错的。

标签: jquery if-statement radio-button


【解决方案1】:

替换你的部分代码:

$('input:radio[name="newsletter"]').val == 1

有了这个

parseInt($('input:radio[name="newsletter"]').val(), 10) == 1

再试一次

$('input:radio[name="newsletter"]').val() == "1"

【讨论】:

  • 也可以只检查字符串"1" 并跳过parseInt
【解决方案2】:

您的选择器将返回两个单选按钮,并检查是否选中其中任何一个

is() 根据选择器、元素检查当前匹配的元素集, 或 jQuery 对象,如果这些元素中至少有一个则返回 true 匹配给定的参数,reference

您在两个单选按钮中都有id,您最好在此处使用id 选择器。

if($('#radios-0:checked').length)
{

}

【讨论】:

  • 这始终是正确的,因为$ 总是返回一个对象。你也错过了)
【解决方案3】:

你好,这是你需要的!

if($('input:radio[name="newsletter"]:checked').val() == 1){
    //add email to newsletter list
}

希望对你有帮助

还有为什么你的单选按钮在标签元素内?

<label class="radio inline" for="radios-0">Yes</label>
<input type="radio" name="newsletter" id="radios-0" value="1" checked="checked">
<label class="radio inline" for="radios-1">No</label>
<input type="radio" name="newsletter" id="radios-1" value="0">

也许这样会更好?

【讨论】:

    【解决方案4】:

    试试这个:

    var radioVal = $("input[name='newsletter']:checked").val();
        if (radioVal == 1) {
            alert("Yes");
        }else{
            alert("NO");
        }  
    

    JSFIDDLE DEMO

    【讨论】:

      【解决方案5】:
      if ($('input:radio[name="newsletter"]:checked').val() == 1 ) {
              //add email to newsletter list
          }
      

      因为您检查收音机是否已检查并且确实是。 你必须检查哪个被选中。

      【讨论】:

        猜你喜欢
        • 2013-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-21
        • 2016-08-04
        • 1970-01-01
        • 1970-01-01
        • 2014-05-31
        相关资源
        最近更新 更多