2010-11-09 16 views
43

Come si imposta il valore predefinito di un pulsante di opzione non selezionato su 0?JQuery: come ottenere il valore del pulsante di scelta selezionato?

ho il seguente codice 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 

E ho il seguente codice per ottenere il valore del pulsante di scelta selezionato

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

Il problema è che, voglio predefinito Il valore di radio_button_value a 0 nell'evento non è selezionato nulla. Come lo faccio?

Io fondamentalmente voglio fare il pseduo-codice qui sotto (ma questo non funziona)

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

UPDATE

Sembra che ci sia confusione su quello che sto chiedendo.

Cosa voglio fare quando la pagina viene caricata (prima che un utente abbia avuto la possibilità di selezionare anche un pulsante di opzione), voglio una funzione che restituirà 0 per il valore del pulsante radio.

Quindi, una volta che un utente ha selezionato un pulsante di opzione, quella funzione SAME restituirà il valore selezionato del pulsante di opzione.

Ha senso?

+1

Non capisco questo. Sicuramente se hai cliccato su un pulsante radio, uno di loro deve essere selezionato?In quale contesto hai bisogno di questo? – lonesomeday

+0

Voglio impostare il valore predefinito su 0 in modo che quando la pagina viene caricata, prima che l'utente abbia la possibilità di selezionare un pulsante di opzione, la mia funzione restituirà 0. Quindi, una volta che un utente seleziona un pulsante di opzione, restituirà il valore di l'attributo selezionato. Ha senso? – StaceyH

+1

Quasi. Quindi hai una funzione (non chiamata "clic" sul pulsante di opzione) che deve sapere se c'è una radio selezionata o no? – lonesomeday

risposta

3

Probabilmente il metodo migliore (in particolare se si desidera essere in grado di pubblicare un valore predefinito), è di avere un pulsante di opzione nascosto che inizia come selezionato e ha il valore predefinito. Quindi, qualcosa di simile:

<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 

Se non è possibile modificare direttamente il codice HTML, è possibile aggiungere tramite script:

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

Ecco una demo di che: http://jsfiddle.net/Ender/LwPCv/

+0

Subdolo! Mi piace. –

+0

Per qualche ragione, questo in realtà NON funziona. È perché sto usando il metodo **. ** e il valore predefinito non viene "cliccato" – StaceyH

+0

Dopo aver fatto clic su qualcosa, il valore riportato sarebbe il valore dell'elemento su cui è stato fatto semplicemente clic. Vedi questa demo modificata: http://jsfiddle.net/Ender/z52PS/ – Ender

90

$('input[name=myradiobutton]:radio:checked') otterrà il pulsante di opzione selezionato $('input[name=myradiobutton]:radio:not(:checked)') otterrà i pulsanti di opzione deselezionati

Utilizzando questo si c un fare questo aggiornamento

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

: Dopo aver letto l'aggiornamento Credo di capire Hai voglia di fare qualcosa di simile

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

Ma il pulsante radio NON è stato ancora selezionato. Quindi questo non funzionerà da solo. – StaceyH

+0

@StaceyH ... Quando vuoi fare questo controllo? OnSubmit del modulo? –

+0

@StaceyH ... Fornito una risposta aggiornata –

18

utilizzare il selettore :checked per determinare se si seleziona un valore:

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

Aggiornamento voi può richiamare la funzione sopra in qualsiasi momento per ottenere il valore selezionato dei pulsanti di opzione.È possibile collegare in esso il carico e quindi ogni volta che il valore cambia con i seguenti eventi:

$(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

Si dovrebbe davvero utilizzare le caselle di controllo se ci sarà un caso in cui qualcosa non sia selezionata.

secondo il W3C

Se nessun pulsante di scelta in un insieme che condividono lo stesso nome di controllo è inizialmente "on", il comportamento user agent per la scelta cui il controllo è inizialmente "on" non è definito. Nota. Poiché le implementazioni esistenti gestiscono diversamente questo caso, la specifica corrente differisce da RFC 1866 ([RFC1866] sezione 8.1.2.4), che afferma:

In qualsiasi momento, viene controllato esattamente uno dei pulsanti di opzione in un set. Se nessuno degli elementi di un gruppo di pulsanti di opzione specifica `CHECKED ', l'agente utente deve controllare inizialmente il primo pulsante di opzione del set.

Poiché il comportamento dell'agente utente è diverso, gli autori dovrebbero accertarsi che in ciascun gruppo di pulsanti di opzione sia inizialmente "attivo".

3

So che questa è una vecchia questione, ma trovo che le risposte non sono autosufficiente tra abbastanza

Il modo più pulito per farlo è quello di utilizzare questo codice

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

:-)

I suoi dati di input del modulo dovrebbe essere simile a questo

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

sicuramente non un'opzione pulita ma funziona. +1 – Kurkula

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

Penso che il suggerimento sia stato incluso in una risposta precedente ... – alexwhan

3

Questo metodo Jquery restituisce la valle di default 0 quando caricamento della pagina ...

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

inizierà non appena la pagina viene caricata. È possibile mantenere sotto alcuni eventi pulsante mi piace clicca

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

questo lavoro per me Spero che questo vi aiuterà: per ottenere la radio valore selezionato è necessario utilizzare il nome rapporto come selettore come questo

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

selectedVal avrà il valore necessario, modificare il radio_name secondo alla tua, nel tuo caso sarebbe b "myradiobutton"

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

per pulsanti di opzione utilizzare il seguente script:

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

Scusa ma, in questo modo, non funziona. – Pablo

3

per ottenere il valore del pulsante selezionato Radio, Usa RadioButtonName e l'ID del modulo che contiene il RadioButton.

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

O da solo

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