2009-04-26 6 views
1

Je veux une fonction/code qui retournera la valeur que l'utilisateur a soumise pour le champ dont le nom/id lui est passé. Peu importe que le champ soit une zone de texte, une zone de texte, une radio ou une sélection. Par exemple, le champ pourrait être:Comment obtenir la valeur des zones de texte, des zones de texte et des radios de la même manière en 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' /> 

Ou

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

Quand je fais l'appel:

function getVal('a_21'); 

Il doit retourner la valeur sélectionnée.

Comment est-ce que je peux faire ceci? Will:

document.myForm.field.value 

de travailler pour des zones de texte, des listes déroulantes et des radios, aussi?

+4

Std. answer: Utilisez jQuery. – Shog9

+0

Jquery fonctionne uniquement avec ID. Avec les radios je ne peux pas utiliser le même id pour chaque option –

+2

@Click Upvote: en fait, vous pouvez facilement écrire un sélecteur jQuery qui correspondra à l'attribut name, affiner en utilisant la pseudoclass: selected, puis tirer la valeur. – Shog9

Répondre

4

En utilisant jQuery vous pouvez faire:

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

Cela vous donnera la valeur sur le champ avec le nom a_21, quel que soit le type de champ.

Note: Les citations ne sont pas nécessaires, mais j'ai obtenu dans la pratique de les ajouter en raison des tableaux de cases à cocher:

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

je figure, il vaut mieux être sûr que d'essayer de comprendre pourquoi ça ne marche pas.

+0

Est-ce que 'a_21' doit être entre guillemets? –

+0

habituellement je voudrais downvote une réponse «utiliser jQuery», mais c'est là où il brille vraiment – geowa4

+0

@Click Upvote, @Seb: il n'a pas besoin d'être entre guillemets. – geowa4

7

Le problème est différent widgets ont des fins différentes. Par exemple, une boîte <select> avec plusieurs choix disponibles, plusieurs cases à cocher, ou même des cases à cocher uniques (dont la valeur serait juste "on" ou "off") n'aurait pas une seule valeur, donc c'est bon pour eux de se comporter différemment des autres widgets.

Mais si vous voulez avoir une seule fonction, vous pouvez faire quelque chose comme:

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; 
} 
Questions connexes