2013-03-01 12 views
24

Niedawno otrzymałem pomoc na tej stronie w używaniu querySelector na formularzu wejściowym, takim jak select, ale jak tylko wziąłem <select>, całkowicie zmieniło to, co trzeba było zrobić w funkcji.Jak mogę użyć querySelector, aby wybrać element wejściowy według nazwy?

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> 

Przedtem miałem ('select') dla querySelector, ale teraz jestem pewien, co się tam umieścić.
Próbowałem wielu rzeczy, a także querySelectorAll, ale nie mogę tego rozgryźć.

Aby było jasne, próbuję ściągnąć name="pwd".

Jak mogę to zrobić?

+0

Metoda 'querySelector' pobiera argument' selector'. Argument 'selector' jest łańcuchem zawierającym jeden lub więcej selektorów CSS oddzielonych przecinkami. Jeśli kiedykolwiek utkniesz na prawidłowych selektorach, MDN ma świetną stronę na [** Selektory **] (https://developer.mozilla.org/en-US/docs/CSS/Getting_Started/Selectors). Poza tym zawsze możesz uzyskać pomoc również z SO. Pomyślałem, że może Ci się przydać na ogół przydatne odniesienie :) – Nope

+0

Jeszcze raz dziękuję: D –

Odpowiedz

37

Można spróbować 'wejściowy [name = "pwd"]':

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

wziąć wyglądać ten http://jsfiddle.net/2ZL4G/1/

+1

Próbowałem, ale nic mi się nie wydaje, a ja nie dostaję żadnego ostrzeżenia –

+0

Hmm, z ... Próbowałem to tak wiele razy i nadal nie działa z tą metodą, ale działa w jsfiddle? czy czegoś brakuje? Pojawia się również w pasku adresu, więc wiem, że dostaje dane wejściowe, po prostu nie dostaję żadnych alertów –

+0

@AnthonyTobuscus: Jeśli twój kod nadal zawiera instrukcję 'debugger;' niż to może spowodować resztę kodu nie wykonywać, ponieważ zatrzymałoby wykonanie na tej linii. – Nope

1

Przykłady te wydają się nieco nieefektywne. Spróbuj tego, jeśli chcesz działać na wartości:

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

Napotkacie problem jeśli używasz this słowa kluczowego z tłuszczu strzałką (=>). Jeśli musisz to zrobić, przejdź starej szkoły:

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

Jeśli pracujesz z wejściami hasło, należy użyć type="password" tak wyświetli ****** gdy użytkownik pisze, i to jest również bardziej semantyczny.

Powiązane problemy