我有JavaScript女巫包含此代码:
$("input:checked").length
返回按钮后,在浏览器中单击此代码$(“input:checked”)。length;不在歌剧院工作。有什么我可以做的吗?
基本上我需要检查是否检查了两个单选按钮
<script>
$(document).ready(function () {
$("#signup").button();
$("#signup").click(function () {
alert($("#bb input:checked").length);
if ($("#bb input:checked").length == 2) {
$("#signup").val("1");
}
});
});
</script>
@using (Html.BeginForm())
{
<div id="wrapper">
<div id="bb">
<div id="rbl1" class="rbl1">
<input type="radio" id="rb11" name="radio-b1" value="1"/><label for="rb11" class="radio">Everyday</label>
<input type="radio" id="rb12" name="radio-b1" value="2"/><label for="rb12" class="radio">Saturday</label>
</div>
<div id="rbl2" class="rbl2">
<input type="radio" id="rb21" name="radio-b2" value="1"/><label for="rb21" class="radio">One</label>
<input type="radio" id="rb22" name="radio-b2" value="2"/><label for="rb22" class="radio">Two</label>
</div>
</div>
</div>
<button name="submit" id="signup">Sugn up</button>
}
首次它在所有浏览器中运行良好,在单选按钮检查后,我在那个时间提交表单一切正常。但后来我刚刚检查了如果我回到浏览器历史记录并再次提交表单,那么所有浏览器都很好,除了Opera,它在这个代码行上失败了$(“#bb input:checked”)。length == 2)和没有提供任何细节原因。
在我使用jQuery 1.5.1之前,我现在更新到1.5.2仍然是同样的问题。 已更新详细示例代码,此处发布完整的html代码http://sourcepod.com/puvmmz30-4571
可能是Opera历史出错了。
在某种程度上我可以设置$(“#signup”)的值.val(“1”);或检查是否选择了广播列表(“#bb输入:选中”)并且Opera历史记录没有清除。
答案 0 :(得分:0)
您是否尝试过使用size()
而不是length
?
答案 1 :(得分:0)
我可以使用Opera 12.12和jQuery 1.6.1重现这个问题。 如果我将jQuery升级到1.9.1,我无法重现这一点。
如果无法升级jQuery版本,可以使用.each()和value.checked获取正确的选中值。
请参阅: $(“。reason input”)。each(function(index,value){console.log(value.checked,value)})
返回已检查的正确值。