Was ist mit jQuery der beste Weg, um OnClick-Ereignis-Listener für Optionsfelder festzulegen?

StackOverflow https://stackoverflow.com/questions/46704

  •  09-06-2019
  •  | 
  •  

Frage

Für den folgenden HTML-Code:

<form name="myForm">
    <label>One<input  name="area"  type="radio" value="S"  /></label>
    <label>Two<input name="area"   type="radio" value="R" /></label>
    <label>Three<input name="area"   type="radio" value="O" /></label>
    <label>Four<input name="area" type="radio" value="U" /></label>
</form>

Wechsel vom folgenden JavaScript-Code:

$(function() {
     var myForm = document.myForm;
     var radios = myForm.area;

     // Loop through radio buttons
     for (var i=0; i<radios.length; i++) {
        if (radios[i].value == "S") {
            radios[i].checked = true;   // Selected when form displays
            radioClicks();   // Execute the function, initial setup
        }
        radios[i].onclick = radioClicks;  // Assign to run when clicked
     }  
 });

Danke

BEARBEITEN:Die von mir ausgewählte Antwort beantwortet die von mir gestellte Frage. Mir gefällt jedoch die Antwort, die bind() verwendet, weil sie auch zeigt, wie die Gruppe von Optionsfeldern unterschieden werden kann

War es hilfreich?

Lösung

$( function() {
    $("input:radio")
        .click(radioClicks)
        .filter("[value='S']")
        .attr("checked", "checked");
});

Andere Tipps

$(document).ready(function(){
    $("input[name='area']").bind("click", radioClicks);
});

functionradioClicks() {
    alert($(this).val());
}

Ich benutze es gerne bind() Anstatt den Event-Handler direkt zu verdrahten, weil Sie zusätzliche Daten an den Event-Hander übergeben können (hier nicht gezeigt, aber die Daten sind ein drittes bind()-Argument) und weil Sie die Bindung einfach aufheben können (und Sie können sie nach Gruppe binden und entbinden-- siehe die jQuery-Dokumente).

http://docs.jquery.com/Events/bind#typedatafn

$(function() {

  $("form#myForm input[type='radio']").click( fn );

});

function fn()
{
   //do stuff here
}
$(function() {
    $('input[@type="radio"]').click(radioClicks);
});

Ich denke, so etwas sollte funktionieren (aber es ist ungetestet):

$("input[@type='radio']").each(function(i) {
    if (this.val() == 'E') {
        radioClicks();
        this.get().checked = true;
    }
}
$("input[@type='radio']").click(radioClicks);
$(function() {
    $('#myForm :radio').each(function() {
        if ($(this).value == 'S') {
            $(this).attr("checked", true);
            radioClicks();
        }

        $(this).click(radioClicks);
    });
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top