返回浏览器历史记录后,$(“input:checked”).length 在 Opera 中不起作用
我的 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
可能是一些东西歌剧历史出了问题。
是否有其他方式我可以设置 $("#signup").val("1"); 的值或检查是否选择了广播列表(“#bb 输入:选中”)并且 Opera 历史记录未清除该列表。
I have JavaScript witch contain this code:
$("input:checked").length
After go back button clicked in browser this code $("input:checked").length; not working in opera. Is there anything i can do?
Basically I need to check if there was two radio-buttons checked or not
<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>
}
First time it is working well in all browsers, after radio buttons checked i submitting my form in that time everything fine. But then i just checked whats happened if i go back in browser history and submit form again, so all browsers fine except opera, it is failing on this code line $("#bb input:checked").length == 2) and didn't give any details why.
Before i used jQuery 1.5.1 now i updated to 1.5.2 and still the same problem.
Detailed sample code updated, full html code posted here http://sourcepod.com/puvmmz30-4571
Probably something with Opera history going wrong.
Is there somehow else i may set value of $("#signup").val("1"); or check if radio list selected ("#bb input:checked") and Opera history didn't clear that.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您是否尝试过使用
size()
而不是length
?Have you tried to use
size()
rather thanlength
?我可以使用 Opera 12.12 和 jQuery 1.6.1 重现这个问题。
如果我将 jQuery 升级到 1.9.1,我将无法重现此情况。
如果您无法升级 jQuery 版本,您可以使用 .each() 和 value.checked 获取正确的检查值。
看:
$(".reasons input").each(function(index, value) {console.log(value.checked, value)})
它返回检查的正确值。
I can reproduce this problem using Opera 12.12 and jQuery 1.6.1.
I cannot reproduce this if I upgrade jQuery to 1.9.1.
If you can't upgrade your jQuery version, you can get the correct checked value using .each() and value.checked.
See:
$(".reasons input").each(function(index, value) {console.log(value.checked, value)})
It returns the correct values for checked.