2009-04-26 4 views
1

Ich möchte eine Funktion/einen Code, die den Wert zurückgibt, den der Benutzer für das Feld, dessen Name/ID an es weitergegeben wird, übergeben. Es sollte egal sein, ob das Feld eine Textbox, Textarea, Radio oder Select ist. Zum Beispiel könnte das Feld sein:Wie erhalten Sie Textboxen, Textareas und Radios auf die gleiche Weise in Javascript?

<input type='radio' name='a_21' value='test' id='a_21_0' /> 
<input type='radio' name='a_21' value='test2' id='a_21_1' /> 

Oder

<textarea name="a_21" rows="30" cols="6"></textarea> 

Wenn ich den Anruf:

function getVal('a_21'); 

Es soll den gewählten Wert zurück.

Wie kann ich das tun? Will:

document.myForm.field.value 

arbeiten für textareas, dropdowns und radios auch?

+4

Std. Antwort: Verwenden Sie jQuery. – Shog9

+0

Jquery funktioniert nur mit ID. Mit Radios kann ich nicht die gleiche ID für jede Option verwenden –

+2

@ Click Upvote: tatsächlich können Sie einfach einen jQuery-Selektor schreiben, der auf das name-Attribut passt, weiter verfeinern mit der: ausgewählten Pseudoklasse und dann den Wert ziehen. – Shog9

Antwort

4

jQuery verwenden Sie tun können:

$('[name="a_21"]').val(); 

Dies gibt Ihnen den Wert auf des Feldes mit dem Namen a_21, egal welche Art von Feld.

Hinweis: Die Zitate sind nicht erforderlich, aber ich habe wegen der Checkbox-Arrays in der Praxis der Zugabe von ihnen bekommen:

<input type="checkbox" name="ids[]" value="1" /> 
<input type="checkbox" name="ids[]" value="2" /> 

ich meine, es ist besser, sicher zu sein, als zu versuchen, um herauszufinden, warum es nicht funktioniert.

+0

Muss 'a_21' in doppelten Anführungszeichen stehen? –

+0

Normalerweise würde ich eine 'jQuery' Antwort ablehnen, aber das ist, wo es wirklich glänzt – geowa4

+0

@Click Upvote, @Seb: es muss nicht in Anführungszeichen überhaupt sein. – geowa4

7

Das Problem ist anders Widgets haben unterschiedliche Zwecke. Eine <select> Box mit mehreren Auswahlmöglichkeiten, mehreren Ankreuzfeldern oder sogar einzelnen Ankreuzfeldern (deren Wert nur "an" oder "aus" wäre) hätte keinen einzigen Wert, es ist also in Ordnung, wenn sie sich anders verhalten als andere Widgets.

Aber wenn Sie eine einzige Funktion haben wollen, könnten Sie so etwas wie:

function getVal(obj){ 
    if(obj.value){ 
    return obj.value; 
    } 

    if(obj.selectedIndex){ 
    return obj.options[obj.selectedIndex]; 
    } 

    if(obj.checked){ 
    return obj.checked; 
    } 

return null; 
}