Die überprüfung, ob radio-buttons überprüft, in Firefox
Auf meiner Seite, ich habe zwei Checkboxen erstellt, in meinem ASP.NET MVC-Ansicht etwa so:
Html.RadioButton("check", "true", "true" == (string) ViewData["someKey"], new { id = "check1"});
Html.RadioButton("check", "false", "false" == (string) ViewData["someKey"], new { id = "check2"});
Ich bin überzeugt, dass ViewData["someKey"] hat den Wert "true" enthält.
In meiner JS-init-Funktion, führe ich die folgenden check:
alert($('#check1').is(':checked') + " " + $('#check2').is(':checked'));
In Firefox (und nur Firefox), mein alert-dialog zeigt die folgenden (es funktioniert, wie erwartet, in jedem anderen browser):
Initial page load: true false
Normal refresh via Ctrl + R: false false
Refresh skipping cache via Ctrl + Shift + R: true false
Ich habe versucht, viele verschiedene Methoden zu betrachten, die checkbox-Wert, einschließlich $('#check1').attr('checked')
ohne Erfolg. Wenn ich untersuchen den HTML-Code in Firebug kann ich sehen, dass die erste radio-button hat die Eigenschaft checked="checked"
im es.
Warum ist die checkbox Wert ändern in FF, wenn ich aktualisieren und wie kann ich dies vermeiden? Da dies scheint eine FF-only-bug, wie kann ich meinen code, damit es funktioniert?
Diese Frage ALSO schien zu Fragen, etwas ähnliches, aber keine der vorgeschlagenen Lösungen scheinen zu funktionieren in diesem Fall.
Bearbeiten: ich sollte auch darauf hinweisen, dass, wenn der radio-button gerendert wird nach dem aktualisieren in FF, es ist eigentlich nicht angezeigt als aufgegebenes entweder, trotz allem, was HTML ist mir zu sagen.
Edit2: Hinzufügen von raw-HTML wie pro Antrag
<input id="check1" type="radio" value="True" name="check" checked="checked"/>
<input id="check2" type="radio" value="False" name="check"/>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können wir den erzeugten HTML? Sind Sie wirklich die Schaffung von zwei radio-buttons, mit beiden den gleichen Namen und den gleichen Wert?
Denken Sie daran, wenn Sie auf aktualisieren, Browser versuchen die form zu bewahren Feld Inhalt der Seite vor dem aktualisieren. Dies beinhaltet die radio-Taste Zustand. Wenn Sie zwei nicht zu unterscheidende radio-buttons, das würde zu sein scheinen ein guter Weg zu verwirren browser versuchen Sie zu re-etablieren, die die form Staat.
document.getElementById('check1').checked
?Es klingt wie dein Skript kann ausgeführt werden, bevor die Seite vollständig geladen ist. Wo haben Sie den Javascript-code? Wenn Sie nicht bereits haben, versuchen Sie, den code am Ende der
<body>
block.Ich hatte das gleiche problem vor ein paar Tagen und das Problem war, dass ich die "check", bevor das Element vollständig geladen wurde oder erbracht werden, es war eine DropDownList, die ich gerendert mit jQuery.
Meinem Fall war sehr speziell, aber ich musste Nacharbeit der code, um dies zu berücksichtigen...
Es scheint, dass das problem nicht mit überprüfung, ob oder nicht die radio-buttons überprüft werden, sondern dass Sie mehr Schaltflächen sind auch nicht aktiviert, obwohl der HTML-code sagt etwas anderes.
Ich gebucht habe, ein follow-up Frage zu dieser hier als Nachtrag zu diesem Thema.
BEARBEITEN: Auf dieser Seite hat eine gute Beschreibung des Problems und die Lösungen, die Sie ergreifen können, um es zu lösen.
Ich diese verwendet, um Kraft, firefox zurücksetzen, um die Optionsfelder aktiviert auf aktualisieren.
wobei [0] der index des radiobutton-Steuerelements in der spezifischen Gruppe ( [0] = erste radio-button [1] = zweite radio-button, ..)
Hatten wir ähnliche Fehler in firefox bei der Verwendung von jquery um die Auswahl zu ändern. Obwohl der code korrekt geändert laut firebug keiner der radio-buttons ausgewählt wurde. Die Lösung, die wir gefunden haben, ist zu entfernen Sie die radio-buttons aus dem DOM und nur setzen Sie Sie zurück.