2017-01-19 7 views
-2

Unten ist meine Logik, um den Wert der einzelnen Optionsfelder zu überprüfen. Ich benutze einen Teil ihrer IDs, um die Radioknöpfe zu erreichen. Mein Code gibt jedoch immer einen Wert zurück, der auf dem Wert meines ersten Optionsfelds basiert. Ich möchte, dass der Wert jedes Optionsfelds zurückgegeben wird. Wenn zum Beispiel das Optionsfeld "Ja" ausgewählt wurde, sollte der zurückgegebene Wert 1 sein. Sonst, 0. Jede Person, die meinen Code aktualisieren kann.Jquery .val() -Funktion, um den Wert der Optionsfelder zu überprüfen

$('.YesNoRadio').each(function() { 

    if ($('[id*="YesNo_RadioButtonList_"] input[type="radio"]:checked').val() == 1) { 
     //$('[id*="AddAttachment"]').trigger('click'); 
     $('[id="upload"]').click(); 
    } 

}); 

Html:

//For yes radio button 
<input id="_YesNo_RadioButtonList_0" type="radio" name="YesNo_RadioButtonList" value="1"> 
//For no 
<input id="_YesNo_RadioButtonList_0" type="radio" name="YesNo_RadioButtonList" value="0"> 
+0

share html markup – guradio

+0

Der '[id * =" YesNo_RadioButtonList _ "] Selektor bedeutet, dass mehr als ein Element gefunden wird, so dass Sie wahrscheinlich eine weitere Schleife benötigen. Wie @guradio erwähnt, müssen wir wirklich Ihr HTML sehen. Auch '$ ('[id =" upload "]') sollte wirklich' $ ('# upload') sein ' –

+1

Sie können keine Elemente mit derselben ID haben (' _YesNo_RadioButtonList_0'') –

Antwort

3

Ihre Wähler falsch ist, entfernen Raum vom Wähler. Wenn Sie " " es verwenden, zeigt Sie zielen Kind-Elemente, dh Descendant Selector (“ancestor descendant”)

if($('[id*="YesNo_RadioButtonList_"]:radio:checked').val() == 1) 
    $('[id="upload"]').click(); 

Und Sie brauchen nicht .each()

+1

Danke. Es hat immer noch nicht das getan, was ich erwartet hatte, aber ich habe es ein wenig verbessert. –

-1

Versuchen Sie diesen Code

$('.YesNoRadio').each(function() { 
    if ($('[id*="YesNo_RadioButtonList_"] input[type="radio"]:checked').val() == 1) { 
     //$('[id*="AddAttachment"]').trigger('click'); 
     console.log($(this).val()); 
     $('[id="upload"]').click(); 
    } 
}); 
+0

Welchen Unterschied macht das Hinzufügen der 'console.log()'? Scheint, als ob dies ein Kommentar sein sollte –

0
//For yes radio button 
<input class="YesNoRadio" id="_YesNo_RadioButtonList_0" type="radio" name="YesNo_RadioButtonList" value="1"> 
//For no 
<input class="YesNoRadio" id="_YesNo_RadioButtonList_0" type="radio" name="YesNo_RadioButtonList" value="0"> 

<script type="text/javascript"> 
    $('.YesNoRadio').each(function() { 
     if ($(this).is(':checked')) { 
      alert($(this).val()); 
      //code for yes radio button 
      $('[id="upload"]').click(); 
     }else{ 
      alert($(this).val()); 
      //code for no radio button 
     } 
    }); 
</script> 
0

Eine Methode, die für mich gearbeitet wurde, den Namen in der HTML-Input-Tag einstellen das gleiche für jedes Optionsfeld ist die Liste, die Sie getan haben:

<input id="_YesNo_RadioButtonList_0" type="radio" name="YesNo_RadioButtonList" value="1"> 
<input id="_YesNo_RadioButtonList_0" type="radio" name="YesNo_RadioButtonList" value="0"> 

dann würde ich das tun meine JS mit JQuery ist.

var radioButtonValue = $("input[name='YesNo_RadioButtonList']:checked").val(); 

Dies sollte Ihnen den Wert Ihres Optionsfelds geben. Der Wert ist in Ihrem Fall in Ihrem Eingabe-Tag voreingestellt.

Verwandte Themen