2011-11-02 7 views
5

Firefox 7.0.1では、2つのチェックボックスとその他の入力があります。Firefoxがラジオボタンを間違って記憶している

jQueryで別の入力を追加すると、Firefoxは選択されているラジオ入力を正しく覚えていません。

たとえば、最初のラジオボタンを選択してからページをリフレッシュすると、最初のラジオボタンではなく2番目のラジオボタンが選択され、再度リフレッシュするとラジオボタンが選択されません。

あなたは自分のためにテストするために新しいファイルに以下のコードをコピーして貼り付けることができる必要があります:

<!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> 
私は私が実際に何をしようとしているが、より複雑であることに注意してください

が、後に多くの時間をデバッグの私はそれにこれを絞り込むことができた。 http://www.ryancramer.com/journal/entries/radio_buttons_firefox/

:それは、この問題への応答がないことが表示されます

+0

あなたがフォームを送信するか、直後意味しますかページを更新?私はフォームを記入して提出する前に単にリフレッシュすれば、ユーザー入力を覚えているブラウザは公式にはないと思います。 –

+0

私はFirefoxが、あるいは少なくとも慣れていたと感じています。それにもかかわらず、それぞれのリフレッシュ時に異なるラジオボタンがチェックされている方法にはまだ問題が残っています。 – robjbrain

+0

公式には、JSを通じてDOMの可鍛性が与えられると、期待される指標が存在しない可能性があり、解釈の余地があることを意味します。そのいわゆるメモリはdomの基本的な数値位置に基づいている可能性があり、この予期しない挿入のためにそれが誤って適用されている可能性があります。だから、あなたの期待されるフォームのステータスを含むjsクッキーを設定して、それをあなたのdocument.readyコールに適用することが必要になるかもしれません。 –

答えて

14

ずに残っていますバグが最初5年前報告されました:https://bugzilla.mozilla.org/show_bug.cgi?id=394782

ソリューション:

<form autocomplete="off"> 

かのjQueryを使用して:

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

ちょうどラジオボタン自体にオートコンプリート=「オフ」(あなたはまだ他のフォームフィールドのオートコンプリートを取得することができますこの方法)を置くことによって、問題を防止することも可能です。

+2

3つ目のラジオボタンにチェックマークがついていても、ラジオボタンとFirefoxのグループでこの問題が発生しました。 ChromeとIEでは、選択した3番目のボタンが正しく表示されます。私は提案された 'オートコンプリート= "オ​​フ"をグループのラジオボタンのそれぞれに追加しました。そして、Firefoxは選択された3番目のラジオボタンを正しく表示します。 – toyNN

0

、私はまだこの問題についての記事があり、それは、Firefoxのバグだと仮定しますが、私は修正

+0

Firefox 38.0.5で動作する修正を公開しました: http:// stackoverflow。firebox/30946161#30946161 これは少し違うバグで、デフォルト値はまったくチェックされませんでしたが、ページがロードされたときにデフォルト値(またはサーバー側に挿入された保存値)が読み込まれます。 –

1

チェックすべきラジオ入力はので、入力要素を探し、手動で、それは私のために、この問題を修正チェックし、属性checked="checked"を保持します:

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

関連する問題