返回浏览器历史记录后,$(“input:checked”).length 在 Opera 中不起作用

发布于 2024-10-29 19:45:15 字数 1851 浏览 1 评论 0原文

我的 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 技术交流群。

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

发布评论

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

评论(2

夜声 2024-11-05 19:45:15

您是否尝试过使用 size() 而不是 length

Have you tried to use size() rather than length?

耀眼的星火 2024-11-05 19:45:15

我可以使用 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.

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