2013-03-01 22 views
24

Gần đây tôi đã nhận được trợ giúp trên trang web này theo hướng sử dụng querySelector trên đầu vào biểu mẫu chẳng hạn như select nhưng ngay sau khi tôi lấy <select>, nó hoàn toàn thay đổi những gì phải được thực hiện trong chức năng.Tôi làm cách nào để sử dụng querySelector để chọn yếu tố đầu vào theo tên?

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> 

Trước đây, tôi đã ('select') cho querySelector, nhưng bây giờ tôi không chắc chắn những gì để đặt ở đó.
Tôi đã thử nhiều thứ cũng như querySelectorAll nhưng dường như tôi không thể hiểu được.

Để rõ ràng, tôi đang cố gắng kéo name="pwd".

Tôi làm cách nào để thực hiện việc này?

+0

Phương thức 'querySelector' lấy đối số' selector'. Đối số 'selector' là một chuỗi chứa một hoặc nhiều bộ chọn CSS được phân tách bằng dấu phẩy. Nếu bạn từng bị kẹt trên bộ chọn hợp lệ, MDN có một trang tuyệt vời trên [** Bộ chọn **] (https://developer.mozilla.org/en-US/docs/CSS/Getting_Started/Selectors). Tất nhiên bạn luôn có thể nhận được sự trợ giúp về SO. Tôi chỉ nghĩ rằng bạn có thể tìm thấy trang một tài liệu tham khảo hữu ích để có nói chung :) – Nope

+0

Cảm ơn một lần nữa: D –

Trả lời

37

Bạn có thể thử 'input [name = "pwd"]':

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

hãy xem một này http://jsfiddle.net/2ZL4G/1/

+1

Tôi đã cố gắng nhưng không có gì có vẻ trở lại với tôi và tôi nhận được không có cảnh báo –

+0

Hmm, wth .. Tôi đã cố gắng điều này rất nhiều lần và nó vẫn không hoạt động với phương pháp này, nhưng nó hoạt động trong jsfiddle? tui bỏ lỡ điều gì vậy? Ngoài ra nó xuất hiện trong thanh địa chỉ để tôi biết nó nhận được đầu vào, chỉ cần tôi không nhận được bất kỳ cảnh báo nào –

+0

@AnthonyTobuscus: Nếu mã của bạn vẫn có câu lệnh 'debugger;', điều này có thể gây ra phần còn lại của mã không thực thi vì nó sẽ dừng việc thực thi trên dòng đó. – Nope

1

Những ví dụ này có vẻ hơi kém hiệu quả. Hãy thử điều này nếu bạn muốn hành động theo giá trị:

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

Bạn sẽ gặp phải vấn đề nếu bạn sử dụng this từ khóa với chất béo mũi tên (=>). Nếu bạn cần phải làm điều đó, đi học cũ:

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

Nếu bạn đang làm việc với các đầu vào mật khẩu, bạn nên sử dụng type="password" vì vậy nó sẽ hiển thị ****** khi người dùng đang gõ, và nó cũng là ngữ nghĩa hơn.

Các vấn đề liên quan