2010-04-20 21 views
6

Dưới đây là các tùy chọn mà tôi có trong mã HTML của tôi:Kiểm tra xem tùy chọn chọn thả xuống là không phải là lần đầu tiên với JavaScript

<label id="subn"> 
     <select name="subs" id="subs"> 
     <option value="nothing">Choose a Subject</option> 
     <option value="General Question">General Question</option> 
     <option value="MemberShip Area">MemberShip Area</option> 
     <option value="Others">Others</option> 
     </select> 
    </label> 

Tôi muốn tạo ra mã JavaScript mà sẽ kiểm tra nếu người dùng chọn một tùy chọn khác hơn đầu tiên.

Đây là những gì tôi đã cố gắng:

if (document.getElementsByTagName('option') == "nothing"){ 
    document.getElementById("subn").innerHTML = "Subject is Required!"; 
    document.getElementById("subs").focus(); 
    return false; 
} 

Trả lời

11

Bạn có thể kiểm tra như thế này nếu nothing sẽ là đầu tiên (thường là trường hợp trong kinh nghiệm của tôi):

if (document.getElementById('subs').selectedIndex == 0){ 

Để vẫn so sánh dựa trên giá trị, thực hiện điều này:

var sel = document.getElementById('subs'); 
if (sel.options[sel.selectedIndex].value == 'nothing') { 

Bạn có thể thay đổi đánh dấu để gắn nhãn s bên cạnh, như thế này:

<select name="subs" id="subs"></select><label id="subn" for="subs"></label> 

Nếu phần này: .innerHTML = "Subject is Required!"; sẽ xóa bạn <select> :)

+1

Bạn đã viết 'document.getElementsByTagName ('subs')', nơi bạn có nghĩa là 'document.getElementById ('subs')' – RoToRa

+0

@RoToRa - Rất tiếc lỗi sao chép, cảm ơn! và cố định. –

+0

Cảm ơn bạn đã làm điều đó, – Mahmoud

1

này nên làm điều đó:

var index = document.your_form_name.subs.selectedIndex; 
var value = document.your_form_name.subs.options[index].value; 

if (value === "nothing"){ 
    // your further code here......... 
} 
0

document.getElementsByTagName('option') đưa ra một bộ sưu tập của tất cả các yếu tố trong option tài liệu và "nothing" là một chuỗi. So sánh một bộ sưu tập với một chuỗi là khá vô ích.

Đồng thời đặt document.getElementById("subn").innerHTML = "Subject is Required!"; sẽ xóa phần tử select, vì vậy document.getElementById("subs") sẽ không tìm thấy bất kỳ thứ gì nữa.

Nếu bạn chỉ cần biết nếu bất cứ điều gì được chọn kiểm tra selectedIndex tài sản của các yếu tố select:

if (document.getElementById("subs").selectedIndex <= 0) { 
    // nothing is selected 
} 

EDIT: Changed > 0-<= 0. Tôi sẽ giả định rằng nó nên được kiểm tra nếu người dùng không chọn bất cứ điều gì, quá.

+0

'if()' của bạn là ngược, nếu nó là '> 0' không có gì là ** không ** được chọn, anh ta muốn kiểm tra ngược lại. –

+0

Vâng, trong văn bản ông đã viết "nếu người dùng chọn một chủ đề khác với người đầu tiên", nhưng trong ví dụ của mình, ông đã cố gắng kiểm tra xem người đầu tiên đã được chọn, do đó, có một chút mâu thuẫn. – RoToRa

+0

Anh ấy đang thêm một tin nhắn * nếu họ chọn không có gì *, nó quay lại. Điều này là ** rất rõ ràng từ mã của mình, tôi không chắc nơi sự nhầm lẫn là ... –

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