0

我有一对单选按钮如下

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

5 回答 5

3

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

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

你有id两个单选按钮,你最好id在这里使用选择器。

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

}
于 2013-08-02T13:32:04.297 回答
1

嗨,这是你需要的!

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

也许这会更好?

于 2013-08-02T13:37:13.937 回答
0

Replace your part of the code:

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

with this

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

and try again

or

$('input:radio[name="newsletter"]').val() == "1"
于 2013-08-02T13:30:59.040 回答
0

尝试这个:

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

JSFIDDLE 演示

于 2013-08-02T13:38:59.160 回答
0
if ($('input:radio[name="newsletter"]:checked').val() == 1 ) {
        //add email to newsletter list
    }

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

于 2013-08-02T13:39:47.987 回答