2012-01-03 133 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属性,并删除所有其他(如适用)。