2011-11-02 69 views
5

在Firefox 7.0.1中,我有兩個複選框和一些其他輸入。Firefox記住單選按鈕不正確

當我通過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

你的意思是你提交表單或剛過刷新頁面?我不認爲任何瀏覽器在填寫表格和提交之前都會正式聲明記住用戶輸入,如果他們只是刷新。 –

+0

我有一種Firefox的感覺,或者至少已經習慣了。儘管如此,在每次刷新時檢查不同單選按鈕的方式仍然存在問題。 – robjbrain

+0

官方的意思是,由於DOM通過JS的可塑性,預期的指數可能不存在,因此需要解釋。有一種可能性,即所謂的記憶基於dom中的基本數字位置,並且由於這種意外的插入,它會誤用它。因此,對於您來說,可能需要設置一個包含預期表單狀態的js cookie,並將其應用於document.ready調用。 –

回答

14

有關於這個問題的文章: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"); 
}); 

也可以通過只是在單選按鈕將自動完成=「關閉」自己(這樣你仍然可以得到其他表單字段自動完成),以防止問題。

+2

我剛剛遇到了一個單選按鈕和Firefox選擇第一個問題的問題,即使第三個單選按鈕有'checked'屬性。 Chrome和IE正確顯示第三個按鈕被選中。我向組中的每個單選按鈕添加了建議的'autocomplete ='off'',現在Firefox正確顯示選中的第三個單選按鈕。 – toyNN

0

看來,有這個問題沒有迴應,我還以爲這是在Firefox中的錯誤,但我留下,不用修復

+0

我發佈了一個適用於Firefox 38.0.5的修補程序: http:// stackoverflow。com/questions/7876384/radio-boxes-not-resetting-to-checked-status-in-firefox/30946161#30946161 這是一個稍微不同的錯誤,默認值根本沒有檢查,但它確保你的頁面加載頁面時加載默認值(或保存的值注入服務器端)。 –

1

應當檢查無線電輸入保持屬性checked="checked",所以尋找一個input元素,並手動檢查它解決了這個問題對我來說:

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