2012-01-03 30 views
7

Tôi có một hàm được gọi bằng onbeforeunload. Trong vòng tôi muốn thiết lập lại tất cả các dropdowns nhưng tôi không thể tìm thấy đúng phương pháp để thiết lập lại chúng trở lại giá trị 0.Đặt lại tất cả các menu thả xuống chọn

<head> 
    <script type="text/javascript"> 
     function displaymessage() { 
      document.getElementsByTagName('select').value = 1; 
      //or 
      document.getElementsByTagName('select').options.length = 0; 
     } 
    </script> 
</head> 

<body> 
    <form> 
     <input type="button" value="Click me!" onclick="displaymessage()" /> 
    </form> 

    <select name="data[Rate][15][12][num_rooms]" id="r15ro12"> 
     <option value="0">0</option><option value="1">1 Rooms</option> 
     <option value="2">2 Rooms</option><option value="3">3 Rooms</option><option value="4">4 Rooms</option> 
     <option value="5">5 Rooms</option><option value="6">6 Rooms</option><option value="7">7 Rooms</option> 
     <option value="8">8 Rooms</option><option value="9">9 Rooms</option> 
    </select> 

    <select name="data[Rate][15][12][num_rooms]" id="r15ro12"> 
     <option value="0">0</option><option value="1">1 Rooms</option> 
     <option value="2">2 Rooms</option><option value="3">3 Rooms</option><option value="4">4 Rooms</option> 
     <option value="5">5 Rooms</option><option value="6">6 Rooms</option><option value="7">7 Rooms</option> 
     <option value="8">8 Rooms</option><option value="9">9 Rooms</option> 
    </select> 
</body> 
</html> 
+1

Bạn không nên có nhiều hơn một phần tử có cùng 'tên' hoặc' id' là '# r15ro12' và tất cả các phần tử biểu mẫu của bạn (' đầu vào', 'chọn', v.v) phải nằm trong' biểu mẫu'. – Stefan

+0

Tôi đã làm một bản sao nhanh và dán ví dụ, tôi không có nó trong mã của tôi, cảm ơn cho các thông tin phản hồi, cổ vũ –

+0

Ok, đó là tuyệt vời! Cũng tự hỏi tại sao một người muốn đặt lại các lựa chọn về 'unload'? (giả sử bạn đang đóng cửa sổ bật lên) – Stefan

Trả lời

21
function displaymessage() { 
    $("select").each(function() { this.selectedIndex = 0 }); 
} 

này chọn tùy chọn đầu tiên (không nhất thiết phải có giá trị = 0)

+0

Cảm ơn Fabrizio đã trợ giúp, nhưng nó không hoạt động, có vẻ đúng với tôi –

+0

mhhh ... http: // jsfiddle.net/RSk9q/nó hoạt động như mong đợi – fcalderan

+0

Keith, mã trên sẽ chỉ hoạt động nếu bạn đã bao gồm thư viện jQuery. – nkm

1

Hãy thử điều này:

function displaymessage() { 
    $("select").val("0"); 
} 
3

Làm thế nào về một cái gì đó như:

$(window).unload(function() { 
    $("select").val("0"); 
}); 
1

Với mã javascript thô, chúng tôi có thể làm theo ng,

elements = document.getElementsByTagName("select") 
for(i=0; i < elements.length ; i++){ 
elements[i].selectedIndex= 0; 
} 
4

Đây là cách để chọn tùy chọn đầu tiên trong tất cả select s sử dụng JavaScript nguyên gốc;

var elements = document.getElementsByTagName('select'); 
for (var i = 0; i < elements.length; i++) 
{ 
    elements[i].selectedIndex = 0; 
} 

... nhưng jQuery rất tiện dụng và giúp mọi thứ trở nên dễ dàng hơn nhiều.

1

Trước hết, bạn không nên sử dụng cùng một tên/id cho thẻ khác. Nó phải là duy nhất cho mỗi thẻ.

Trong cuộc gọi thẻ chức năng như thế nào,

Sau đó thay đổi ur vui vẻ như chức năng DisplayMessage() { var x = document.getElementsByTagName ('chọn'); cho (var i = 0; i < 2; i ++) { document.getElementById (x [i] .id) .options [0] .selected = "0"; }}

0

Hãy thử điều này:

$('select').each(function() { 
    if ($(this).children().length > 0) { 
     $($(this).children()[0]).attr('selected', 'selected'); 
    } 
}); 
1

Yet Another Way

$('select option:first-child').attr('selected', 'selected'); 

DEMO

+0

Có vẻ như không hoạt động? – Mikeys4u

+0

@ Mikeys4u không demo hoạt động cho bạn? – h0mayun

1

Các giải pháp jQuery Tôi đã thấy cho đến nay không đưa vào tài khoản để loại bỏ các thuộc tính trước đây selected nếu thuộc tính tồn tại, do đó tôi tin rằng bước bổ sung này là bắt buộc:

$("#myControlId").find("select").each(function (index) { 
     var ctrl=$(this);  
     if (ctrl.children().length > 0) { 
      $(ctrl.children()).each(function(index) { 
       if (index===0) $(this).attr('selected', 'selected'); 
       else $(this).removeAttr('selected'); 
      }); 
     } 
}); 

Giải pháp này chỉ giữ một thuộc tính selected trong tùy chọn đầu tiên và xóa tất cả các thuộc tính khác (nếu có).

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