2013-03-01 6 views
24

Recentemente ho ricevuto assistenza su questo sito per l'utilizzo di su un modulo di input come select ma non appena ho preso <select> out ha completamente cambiato ciò che doveva essere fatto nella funzione.Come posso utilizzare querySelector per selezionare un elemento di input per nome?

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> 

Prima, ho avuto ('select') per il querySelector, ma ora io sono sicuro che cosa mettere lì.
Ho provato più cose oltre a querySelectorAll ma non riesco a capirlo.

essere chiaro che sto cercando di tirare la name="pwd".

Come posso fare questo?

+0

Il metodo 'querySelector' accetta un argomento' selector'. L'argomento 'selector' è una stringa contenente uno o più selettori CSS separati da virgole. Se sei mai stato bloccato su selettori validi, MDN ha un'ottima pagina su [** Selettori **] (https://developer.mozilla.org/en-US/docs/CSS/Getting_Started/Selectors). Ovviamente puoi sempre ottenere aiuto anche su SO. Ho solo pensato che si potrebbe trovare nella pagina un riferimento utile per avere in generale :) – Nope

+0

Grazie ancora una volta: D –

risposta

37

Si può provare 'ingresso [name = "pwd"]':

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

dare un'occhiata a questo http://jsfiddle.net/2ZL4G/1/

+1

Ho provato, ma nulla sembra di tornare a me e non ottengo alcuna allerta –

+0

Hmm, con incantevoli .. ho provato questo così tante volte e ancora non funziona con questo metodo, ma funziona in jsfiddle? mi sto perdendo qualcosa? Inoltre appare nella barra degli indirizzi quindi so che sta ottenendo l'input, solo che non ricevo alcun avviso –

+0

@AnthonyTobuscus: Se il tuo codice ha ancora l'istruzione 'debugger;' al suo interno, questo potrebbe causare il resto del codice non eseguire come arresta l'esecuzione su quella linea. – Nope

1

Questi esempi sembrano un po 'inefficiente. Prova questo se si vuole agire sul valore:

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

Si incontrano problema se si utilizza this parola chiave con la freccia di grasso (=>). Se avete bisogno di fare questo, andare vecchia scuola:

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

Se si lavora con gli ingressi di password, è necessario utilizzare type="password" in modo verrà visualizzato ****** mentre l'utente sta scrivendo, ed è anche più semantico.

Problemi correlati