Firefox错误地记住单选按钮

时间:2011-11-02 23:44:19

标签: firefox radio-button

在Firefox 7.0.1中,我有两个复选框和许多其他输入。

当我通过jQuery添加另一个输入时,Firefox无法正确记住选择的无线电输入。

例如,如果我选择第一个单选按钮然后刷新页面,则选择第二个单选按钮而不是第一个,如果我再次刷新,则不会选择单选按钮。

您应该能够将以下代码复制并粘贴到新文件中以进行测试:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
    <script>
    $(document).ready(function(){
    $('select').after('<input class="select" type="text" name="new_text_input" />');
});
    </script>
    <title>Pretty jQuery Form</title>
</head>
<body>
<form>
    <fieldset>
        <label>Select Box</label>
        <select name="my_select">
            <option>Option 1</option>
            <option>Option 2</option>
            <option>Option 3</option>
            <option>Option 4</option>
        </select>
    </fieldset>
    <fieldset>
        <label>Text Input</label>
        <input class="text" id="text_input" name="input" type="text" />
    </fieldset>
    <fieldset>
        <label>Text Area</label>
        <textarea></textarea>
    </fieldset>
    <fieldset>
        <label>Radio</label>
        <input value="1" name="radio" id="radio1" type="radio" /> <label for="radio1">Radio 1</label>
        <input value="2" name="radio" id="radio2" type="radio" /> <label for="radio2">Radio 2</label>
    </fieldset>
</form>
</body>
</html>

我应该注意到,我实际上要做的事情更复杂,但经过几个小时的调试后,我已经设法将其缩小到这个范围。

3 个答案:

答案 0 :(得分:17)

有一篇关于此问题的文章:http://www.ryancramer.com/journal/entries/radio_buttons_firefox/

该错误首次报告五年前https://bugzilla.mozilla.org/show_bug.cgi?id=394782

解决方案:

<form autocomplete="off">

或者使用jQuery:

$(document).ready(function() {
    if ($.browser.mozilla) $("form").attr("autocomplete", "off");   
}); 

也可以通过在单选按钮上单独设置autocomplete =“off”来防止出现此问题(这样您仍然可以获得其他表单字段的自动填充功能)。

答案 1 :(得分:2)

应检查的无线电输入保留属性checked="checked",因此寻找该输入元素并手动检查它为我解决了这个问题:

$('input[type="radio"][checked="checked"]').prop('checked', true);

答案 2 :(得分:0)

似乎对此问题没有回应,我仍然认为它是Firefox中的一个错误,但我没有修复