2012-01-03 183 views
7

我有一個是得到由onbeforeunload調用的函數。在我希望重置所有下拉菜單,但我找不到正確的方法將它們重置爲0值。重置所有選擇下拉菜單

<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

你不應該有相同的'name'或'id'爲'#r15ro12'和所有表單元素('input','select'等)應該是'form'內一個以上的元素。 – Stefan 2012-01-03 11:38:59

+0

我只是做了一個快速複製和粘貼例如,我沒有它在我的代碼,感謝您的反饋,歡呼聲 – 2012-01-03 11:48:59

+0

好,that's太棒了!還想知道爲什麼要重置'unload'上的選擇? (假設you're關閉彈出窗口) – Stefan 2012-01-03 12:03:49

回答

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

此選擇第一選項(不一定具有值= 0)

+0

感謝法布里奇奧的幫助,但它沒有工作,它看起來我的權利 – 2012-01-03 11:52:14

+0

mhhh ... HTTP://的jsfiddle。net/RSk9q /它按預期工作 – fcalderan 2012-01-03 12:00:21

+0

Keith,上面的代碼只有在包含jQuery庫的情況下才能工作。 – nkm 2012-01-03 12:03:25

1

嘗試這種情況:

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

如何類似:

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

隨着原始的JavaScript代碼,我們可以做下面的事情NG,

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

Here's的方式來選擇使用原生的JavaScript所有select S中的第一個選項;

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

...但jQuery是非常方便,使得大多數事情變得更加簡單。

1

首先你不應該使用相同的名稱/ ID爲不同的標籤。它對每個標籤都應該是唯一的。

在標籤呼叫功能等,

然後改變烏爾樂趣像 功能displaymessage(){ VAR X = document.getElementsByTagName( '選擇'); (var i = 0; i < 2; i ++) { document.getElementById(x [i] .id).options [0] .selected =「0」; }}

0

試試這個:

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

另一種方式

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

DEMO

+0

似乎沒有工作? – Mikeys4u 2014-02-27 13:58:25

+0

@ Mikeys4u不適合你演示嗎? – h0mayun 2014-03-01 05:24:39

1

jQuery的解決方案,到目前爲止,我所看到的不考慮刪除以前的selected屬性如果存在,因此我相信這個額外的步驟是必需的:

$("#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'); 
      }); 
     } 
}); 

此解決方案僅保持在第一個選項一個selected屬性,並刪除所有其他(如適用)。