$(“输入:已选中”)。浏览历史记录后,长度在Opera中不起作用

时间:2011-04-03 07:12:53

标签: jquery jquery-selectors

我有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历史记录没有清除。

2 个答案:

答案 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)})

返回已检查的正确值。