2013-03-01 3 views
24

J'ai récemment reçu de l'aide sur ce site pour utiliser querySelector sur une entrée de formulaire comme select mais dès que j'ai pris <select> il a complètement changé ce qui devait être fait dans la fonction.Comment utiliser querySelector on pour sélectionner un élément d'entrée par son nom?

HTML:

<form onsubmit="return checkForm()"> 
    Password: <input type="text" name="pwd"> 
    <input type="submit" value="Submit"> 
</form> 

Javascript:

<script language="Javascript" type="text/javascript"> 
    debugger; 
    function checkForm() { 
     var form = document.forms[0]; 
     var selectElement = form.querySelector(''); 
     var selectedValue = selectElement.value; 

     alert(selectedValue); 
</script> 

Avant, je devais ('select') le querySelector, mais maintenant je ne suis pas sûr ce qu'il faut y mettre.
J'ai essayé plusieurs choses ainsi que querySelectorAll mais je n'arrive pas à le comprendre.

Pour être clair, j'essaie de tirer le name="pwd".

Comment est-ce que je pourrais faire ceci?

+0

La méthode 'querySelector' prend un argument' selector'. L'argument 'selector' est une chaîne contenant un ou plusieurs sélecteurs CSS séparés par des virgules. Si vous avez déjà choisi des sélecteurs valides, le MDN a une excellente page sur [** Sélecteurs **] (https://developer.mozilla.org/fr-fr/docs/CSS/Getting_Started/Selectors). Bien sûr, vous pouvez toujours obtenir de l'aide sur SO aussi. Je pensais juste que vous pourriez trouver la page une référence pratique à avoir en général :) – Nope

+0

Merci encore une fois: D –

Répondre

37

Vous pouvez essayer 'entrée [name = "passwd"]':

function checkForm(){ 
    var form = document.forms[0]; 
    var selectElement = form.querySelector('input[name="pwd"]'); 
    var selectedValue = selectElement.value; 
} 

un coup d'oeil un ce http://jsfiddle.net/2ZL4G/1/

+1

J'ai essayé mais rien ne semble revenir à moi et je ne reçois pas d'alerte –

+0

Hmm, wth .. J'ai essayé cela tant de fois et cela ne fonctionne toujours pas avec cette méthode, mais cela fonctionne dans jsfiddle? est-ce que je manque quelque chose? Il apparaît également dans la barre d'adresse, donc je sais qu'il reçoit l'entrée, mais je ne reçois aucune alerte. –

+0

@AnthonyTobuscus: Si votre code contient toujours l'instruction 'debugger;', cela pourrait causer le reste du code ne pas exécuter car il arrêterait l'exécution sur cette ligne. – Nope

1

Ces exemples semblent un peu inefficace. Essayez ceci si vous voulez agir sur la valeur:

<input id="cta" type="email" placeholder="Enter Email..."> 
<button onclick="return joinMailingList()">Join</button> 

<script> 
    const joinMailingList =() => { 
     const email = document.querySelector('#cta').value 
     console.log(email) 
    } 
</script> 

Vous rencontrerez problème si vous utilisez mot-clé this avec de la graisse flèche (=>). Si vous avez besoin de le faire, aller vieille école:

<script> 
    function joinMailingList() { 
     const email = document.querySelector('#cta').value 
     console.log(email) 
    } 
</script> 

Si vous travaillez avec des entrées de mot de passe, vous devez utiliser type="password" il affiche ****** pendant que l'utilisateur est en train de taper, et il est également plus sémantique.

Questions connexes