Das Optionsfeld checked
wird standardmäßig nicht angezeigt. Ich habe ohne Standardauswahl angefangen und eine sehr einfache js-Validierung durchgeführt, und es hat nicht funktioniert. Also habe ich mich dafür entschieden, nur Standardwerte zu verwenden, bis ich das herausgefunden und festgestellt habe, dass etwas Seltsames vor sich geht.
Das Markup ist gültig und ich habe es in FF, Safari und Chrome versucht. Nichts funktioniert.
Ich denke, es ist ein Konflikt mit der jQuery
Bibliothek, weil das Problem verschwindet, wenn ich das Aufrufskript entferne.
<label>Do you want to accept American Express?</label> Yes
<input id="amex" style="width: 20px;" type='radio' name='Contact0_AmericanExpress' value='1' /> No
<input style="width: 20px;" type='radio' name='Contact0_AmericanExpress' class='check' value='0' checked="checked" />
html
forms
radio-button
Jordanien
quelle
quelle
Antworten:
Wenn Sie mehrere mit demselben Namen und dem aktivierten Attribut haben, wird das zuletzt überprüfte Radio auf der Seite verwendet.
<form> <label>Do you want to accept American Express?</label> Yes<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress" /> maybe<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress" checked="checked" /> No<input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked="checked" /> </form>
quelle
<form>
. Sie können mehrere geprüfte Eingaben mit demselben Namen haben, sofern sie zu verschiedenen Formularen gehören.checked
Eigenschaft hatte. Ich musste sie<form>
für jede Instanz in ein Tag einschließen, damit das Standard-Optionsfeld aktiviert wurde.Das könnte es sein:
Gibt es einen Fehler mit Optionsfeldern in jQuery 1.9.1?
Kurz gesagt: Verwenden Sie nicht attr (), sondern prop (), um Optionsfelder zu überprüfen. Gott, ich hasse JS ...
quelle
Funkeingänge müssen sich in einem Formular befinden, damit "geprüft" funktioniert.
quelle
radio
in einform
(es wardiv
vorher) löst mein Problem! Ich bin gespannt, was der Grund dafür ist.Die ultimative JavaScript-Problemumgehung für dieses nervige Problem -
Schließen Sie einfach den Befehl jQuery in a ein
setTimeout
. Das Intervall kann extrem klein sein, ich benutze10
Millisekunden und es scheint großartig zu funktionieren. Die Verzögerung ist so gering, dass sie für den Endbenutzer praktisch nicht erkennbar ist.setTimeout(function(){ $("#radio-element").attr('checked','checked'); },10);
Dies wird auch mit funktionieren
$("#radio-element").trigger('click');
$("#radio-element").attr('checked',true);
$("#radio-element").attr('checked',ANYTHING_THAT_IS_NOT_FALSE);
Hacky ... hacky ... hacky ... hacky ... Ja, ich weiß ... daher ist dies eine Problemumgehung ...
quelle
Hey, ich hatte auch ein ähnliches Problem auf einer von Ajax generierten Seite. Ich nahm die generierte Quelle mit dem Webdeveloper-Pluggin in FF und überprüfte alle Eingaben im Formular und stellte fest, dass sich in einem versteckten Div ein weiteres Kontrollkästchen befand (Anzeige: keine). mit der gleichen ID, Nachdem ich die ID des zweiten Kontrollkästchens geändert hatte, fing es an zu funktionieren. Sie können das auch versuchen. Und lassen Sie mich das Ergebnis wissen. Prost
quelle
Kopieren Sie einfach Ihren Code in: http://jsfiddle.net/fY4F9/
Nein ist standardmäßig aktiviert. Haben Sie Javascript ausgeführt, das sich auf die Optionsbox auswirken würde?
quelle
Die jQuery-Dokumentation enthält eine detaillierte Erklärung für
checked
Eigenschaft und Attribut .Dementsprechend gibt es hier eine andere Möglichkeit, den ausgewählten Optionsfeldwert abzurufen
var accepted = $('input[name="Contact0_AmericanExpress"]:checked').val();
quelle
Hallo, ich denke, wenn Sie das ID-Attribut für die zweite Eingabe eingeben und ihm einen eindeutigen ID-Wert geben, funktioniert es
<label>Do you want to accept American Express?</label> Yes<input id="amex" style="width: 20px;" type='radio' name='Contact0_AmericanExpress' value='1'/> No<input style="width: 20px;" id="amex0" type='radio' name='Contact0_AmericanExpress' class='check' value='0' checked="checked"/>
quelle
Ich könnte dies wiederholen, indem ich den Namen des
input
Tags für zwei Gruppen von Eingaben wie unten gleich einstelle :<body> <div> <div> <h3>Header1</h3> </div> <div> <input type="radio" name="gender" id="male_1" value="male"> Male<br> <input type="radio" name="gender" id="female_1" value="female" checked="checked"> Female<br> <input type="submit" value="Submit"> </div> </div> <div> <div> <h3>Header2</h3> </div> <div> <input type="radio" name="gender" id="male_2" value="male"> Male<br> <input type="radio" name="gender" id="female_2" value="female" checked="checked"> Female<br> <input type="submit" value="Submit"> </div> </div> </body>
(Um dies zu sehen, klicken Sie hier )
Die folgenden zwei Lösungen beheben das Problem:
form
Tag anstelle vondiv
Tag für eine der Gruppen (kann nicht wirklich herausfinden, warum dies das Problem lösen würde. Würde gerne einige Meinungen dazu hören!)quelle
**Radio button aria-checked: true or false one at a time** $('input:radio[name=anynameofinput]').change(function() { if (this.value === 'value1') { $("#id1").attr("aria-checked","true"); $("#id2").attr("aria-checked","false"); } else if (this.value === 'value2') {; $("#id2").attr("aria-checked","true"); $("#id1").attr("aria-checked","false"); } });
quelle
versuchen Sie es auch so
$('input:radio[name="name"][id="abcd'+no+'"]').attr("checked", "checked");
Wenn es ein
<form />
Tag gibt, dann("checked", true)
anders("checked", "checked")
quelle
Ihr Code ist richtig. Versuchen Sie, Ihr JQuery-Skript zu debuggen, um das Problem zu finden! Wenn Sie FF verwenden, können Sie eine Erweiterung zum Debuggen von JS (und JQuery) installieren, die FireBug heißt.
quelle
Fügen Sie einfach jedes geprüfte Attribut zu jedem Funkgerät hinzu, dessen Standardprüfung aktiviert werden soll
Versuche dies :
<input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked/>
quelle
Sie verwenden nicht standardmäßigen XML-Code (Werte sollten in doppelte Anführungszeichen und nicht in einfache Anführungszeichen gesetzt werden).
Versuche dies:
<form> <label>Do you want to accept American Express?</label> Yes<input id="amex" style="width: 20px;" type="radio" name="Contact0_AmericanExpress" /> No<input style="width: 20px;" type="radio" name="Contact0_AmericanExpress" class="check" checked="checked" /> </form>
quelle
Ersetzen
checked="checked"
durchchecked={true}
. Oder Sie könnten es sogar auf nur kürzenchecked
.Dies liegt daran, dass der erwartete Werttyp der
checked
Requisite ein Boolescher Wert ist. keine Zeichenfolge.quelle