wake-up-neo.net

Optionsfelder "Aktiviert" funktioniert nicht

Das Optionsfeld wird standardmäßig nicht als checked angezeigt. Ich habe ohne Standardwahl angefangen, einige sehr einfache js-Validierungen durchzuführen, und es hat nicht funktioniert. Also entschied ich mich, nur Standardwerte zu verwenden, bis ich herausgefunden 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, da das Problem behoben wird, 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" />

60
Jordan

Wenn Sie mehrere identische Namen mit dem geprüften Attribut haben, wird das zuletzt geprü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>

75
jeeves

Das könnte es sein:

Gibt es einen Fehler mit Radiobuttons in jQuery 1.9.1?

Kurz gesagt: Verwenden Sie nicht attr (), sondern prop (), um die Optionsfelder zu überprüfen. Gott, ich hasse JS ...

30
M.G.Palmer

Die ultimative JavaScript-Lösung für dieses ärgerliche Problem -

Wickeln Sie einfach den Befehl jQuery in ein setTimeout. Das Intervall kann extrem klein sein, ich verwende 10 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 funktioniert auch mit

  • $("#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 ein Workaround ...

11
Lix

Radio-Eingänge müssen sich in einem Formular befinden, damit "geprüft" funktioniert.

10

Hey, ich stand auch vor einem ähnlichen Problem, in einer von Ajax generierten Seite. Ich habe die Quelle mit dem Webdeveloper-Plugin in FF erstellt, alle Eingaben im Formular überprüft und herausgefunden, dass sich in einem versteckten Div ein weiteres Kontrollkästchen befand (Anzeige: keine). Mit derselben ID, Sobald ich die ID des zweiten Kontrollkästchens geändert habe, fing es an zu arbeiten .. Sie können es auch versuchen .. und lassen Sie mich das Ergebnis wissen .. Prost

5
Codemator

Kopiere einfach deinen Code in: http://jsfiddle.net/fY4F9/

Nein ist standardmäßig aktiviert. Haben Sie ein Javascript, das die Radiobox beeinflusst?

3
Ben Rowe

hallo, ich denke, wenn Sie das id-Attribut für die zweite Eingabe setzen 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"/>
1
mentes

Die jQuery-Dokumentation enthält eine ausführliche Erklärung für die checked-Eigenschaft im Vergleich zum Attribut .

Dementsprechend gibt es eine andere Möglichkeit, den ausgewählten Optionsfeldwert abzurufen

var accepted = $('input[name="Contact0_AmericanExpress"]:checked').val();
0
Sudhir

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 installieren, um JS (und JQuery) zu debuggen. Es heißt FireBug.

0
thePanz

Ich könnte dies wiederholen, indem ich den Namen des Tags input für zwei Eingabegruppen wie folgt gleich setze:

<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 auf hier )

Die folgenden beiden Lösungen beheben das Problem:

  1. Verwenden Sie für die Eingänge in der zweiten Gruppe unterschiedliche Namen
  2. Verwenden Sie für eine der Gruppen das form-Tag anstelle des div-Tags (ich kann den wahren Grund, warum dies das Problem lösen würde, nicht wirklich herausfinden. Ich würde gerne einige Meinungen dazu hören!)
0
Liutong Chen

**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");
            }
   });

0
user11097803