在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>
我应该注意到,我实际上要做的事情更复杂,但经过几个小时的调试后,我已经设法将其缩小到这个范围。
答案 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中的一个错误,但我没有修复