2010-11-09 15 views
43

Wie stelle ich den Wert eines nicht ausgewählten Optionsfelds auf 0 ein?JQuery: Wie bekomme ich Radio Button Wert?

Ich habe folgende HTML:

<input type="radio" name="myradiobutton" value="1" />1 
<input type="radio" name="myradiobutton" value="2" />2 
<input type="radio" name="myradiobutton" value="3" />3 

Und ich habe den folgenden Code den Wert des ausgewählt Radiobutton

var radio_button_value $('input[name=myradiobutton]:radio').click(function() {var value = $(this).val();}); 

Problem zu bekommen, ich möchte den Wert auf Standard von radio_button_value zu 0 in dem Fall nichts ausgewählt ist. Wie mache ich das?

Ich möchte im Grunde die pseduo-Code unten tun (aber das funktioniert nicht)

var radio_button_value $('input[name=myradiobutton]:radio').click(function() { 
if set 
    return $(this).val(); 
else 
    return 0; 
}); 

UPDATE

erscheint Es Verwirrung zu sein auf das, was ich für mich zu fragen.

Was ich tun möchte, wenn die Seite geladen wird (bevor ein Benutzer die Möglichkeit hatte, sogar einen Radiobutton auszuwählen), möchte ich eine Funktion, die 0 für den Radiobutton-Wert zurückgibt.

Sobald ein Benutzer eine Optionsschaltfläche ausgewählt hat, gibt diese SAME-Funktion den ausgewählten Wert der Optionsschaltfläche zurück.

Sinn machen?

+1

ich dies nicht verstehen. Sicher, wenn Sie auf ein Optionsfeld geklickt haben, muss eines von ihnen ausgewählt werden?In welchem ​​Kontext brauchen Sie das? – lonesomeday

+0

Ich möchte den Standardwert auf 0 setzen, damit die Funktion beim Laden der Seite, bevor der Benutzer eine Optionsschaltfläche auswählen konnte, 0 zurückgibt. Wenn ein Benutzer dann eine Optionsschaltfläche auswählt, wird der Wert von zurückgegeben das ausgewählte Attribut Sinn ergeben? – StaceyH

+1

Nur ungefähr. Sie haben also eine Funktion (nicht aufgerufen auf "click" auf dem Radiobutton), die wissen muss, ob es eine ausgewählte Radiobox gibt oder nicht? – lonesomeday

Antwort

3

Wahrscheinlich die beste Methode (vor allem, wenn Sie in der Lage sein möchten, einen Standardwert zu posten), wäre ein ausgeblendetes Optionsfeld, das als ausgewählt beginnt und Ihren Standardwert hat. So etwas wie folgt aus:

<input type="radio" name="myradiobutton" value="0" checked="checked" style="display:none;" /> 
<input type="radio" name="myradiobutton" value="1" />1 
<input type="radio" name="myradiobutton" value="2" />2 
<input type="radio" name="myradiobutton" value="3" />3 

Wenn Sie Ihre HTML direkt nicht ändern können, können Sie es über ein Skript hinzufügen könnte:

$(function() { 
    $('input[name=myradiobutton]:radio:first').before('<input type="radio" name="myradiobutton" value="0" checked="checked" style="display:none;" />'); 
}); 

Hier ist eine Demo davon: http://jsfiddle.net/Ender/LwPCv/

+0

Sneaky! Ich mag das. –

+0

Aus irgendeinem Grund funktioniert das tatsächlich nicht. Das liegt daran, dass ich die Methode **. Click ** verwende und der Standardwert nicht auf "geklickt" wird. – StaceyH

+0

Nachdem Sie auf etwas geklickt haben, wäre der gemeldete Wert der Wert des Elements, auf das gerade geklickt wurde. Sehen Sie diese modifizierte Demo: http://jsfiddle.net/Ender/z52PS/ – Ender

90

$('input[name=myradiobutton]:radio:checked') erhalten Sie das ausgewählte Optionsfeld $('input[name=myradiobutton]:radio:not(:checked)') erhalten Sie die nicht ausgewählten Optionsfelder

Mit diesem Sie c ein tun, um diese

$('input[name=myradiobutton]:radio:not(:checked)').val("0"); 

Update: Nachdem Sie die Update Lesen Ich glaube, ich verstehe Sie wollen so etwas wie dieses

var myRadioValue; 

function radioValue(jqRadioButton){ 
    if (jqRadioButton.length) { 
    myRadioValue = jqRadioButton.val(); 
    } 
    else { 
    myRadioValue = 0; 
    } 
} 

$(document).ready(function() { 
    $('input[name=myradiobutton]:radio').click(function() { //Hook the click event for selected elements 
    radioValue($('input[name=myradiobutton]:radio:checked')); 
    }); 

    radioValue($('input[name=myradiobutton]:radio:checked')); //check for value on page load 
}); 
+0

Aber die Radio-Taste wurde noch nicht ausgewählt. Somit wird das nicht alleine funktionieren. – StaceyH

+0

@StaceyH ... Wann möchten Sie diese Überprüfung durchführen? OnSubmit des Formulars? –

+0

@StaceyH ... Vorausgesetzt, Sie eine aktualisierte Antwort –

18

Verwenden Sie tun, um die :checked Wähler, um zu bestimmen, ob ein Wert gewählt wird:

function getRadioValue() { 
    if($('input[name=myradiobutton]:radio:checked').length > 0) { 
     return $('input[name=myradiobutton]:radio:checked').val(); 
    } 
    else { 
     return 0; 
    } 
} 

aktualisieren Sie kann die oben genannte Funktion jederzeit aufrufen, um den ausgewählten Wert der Optionsfelder zu erhalten.Sie können in auf Lasthaken und dann, wenn der Wert mit den folgenden Ereignissen ändert:

$(document).ready(function() { 
    // Value when you load the page for the first time 
    // Will return 0 the first time it's called 
    var radio_button_value = getRadioValue(); 

    $('input[name=myradiobutton]:radio').click(function() { 
     // Will get the newly selected value 
     radio_button_value = getRadioValue(); 
    }); 
} 
2

Sie wirklich Kontrollkästchen verwendet werden soll, wenn es eine Instanz, wo etwas nicht ausgewählt ist.

nach dem W3C

Wenn kein Optionsfeld in einem Satz die gleiche Steuer Namen zunächst „auf“ User-Agent-Verhalten für Wahl ist zu teilen, die zunächst zu steuern ist „on“ ist nicht definiert. Hinweis. Da bestehende Implementierungen diesen Fall anders behandeln, unterscheidet sich die aktuelle Spezifikation von RFC 1866 ([RFC1866] Abschnitt 8.1.2.4), die besagt:

Zu jeder Zeit wird genau einer der Radiobuttons in einem Satz überprüft. Wenn keines der Elemente eines Optionsfelds "CHECKED" angibt, muss der Benutzeragent das erste Optionsfeld des Satzes zunächst prüfen.

Da das Verhalten des Benutzeragenten unterschiedlich ist, sollten die Autoren sicherstellen, dass in jedem Satz von Optionsfeldern dieser zunächst aktiviert ist.

3

Ich weiß, dass dies eine alte Frage ist, aber ich finde, dass die Antworten sufficent nicht genug

Der sauberste Weg, dies zu tun ist, diesen Code

$(".myRadio").click(function() { 
alert($(this).val()); 
}); 

:-)

zu verwenden

Ihr Formular eingegebenen Daten sollte wie folgt

<input type="radio" value="40000" name="pay" class="myRadio" /> 
<label for="40000">40000</label> 
aussehen
+0

definitiv keine saubere Option, aber es funktioniert. +1 – Kurkula

6
jQuery("input:radio[name=myradiobutton]:checked").val(); 
+1

Ich denke, dass Vorschlag wurde in einer früheren Antwort enthalten ... – alexwhan

3

Diese Jquery-Methode gibt den Standard vale 0, wenn Seite geladen ...

$('input[type="radio"]:checked').val(); 
9

Es wird, sobald die Seite geladen starten. Sie können es unter einigen Veranstaltungen halten wie Taste

$("#btn").click(function() { 
var val= $('input[type="radio"]:checked').val(); 
}); 
2

Diese Arbeit klicken für mich diese Hoffnung helfen: Radio ausgewählten Wert erhalten haben Sie Verhältnis Namen als Wähler zu verwenden, wie dies

selectedVal = $('input[name="radio_name"]:checked').val(); 

selectedVal den gewünschten Wert haben, ändern sie die radio_name nach Ihnen, in Ihrem Fall wäre es b „myradiobutton“

selectedVal = $('input[name="myradiobutton"]:checked').val(); 
-1

Für Radio-Buttons verwenden Sie das folgende Skript:

var myRadio = $('input[name=meme_wall_share]'); 
var checkedValue = myRadio.filter(':checked').val(); 
+0

Sorry, aber dieser Weg funktioniert nicht. – Pablo

3

Um den Wert des ausgewählten Radiobutton, Nutzung RadioButtonName und der Formular-ID mit dem Radiobutton zu erhalten.

$('input[name=radioName]:checked', '#myForm').val() 

oder nur durch

$('form input[type=radio]:checked').val(); 
Verwandte Themen