2013-07-09 80 views
22

我试图清空时,选择选项:去除选择框中的所有选项,除了第一种选择

ID“mClick”时,ID的“S单击”,“C单击”和“srClick”将被清空。

id“sClick”被选中,id的“cClick”和“srClick”将被清空。

id“cClick”被选中,id“srClick”将被清空。

<form action="javascript:void(0);" method="POST" id="lForm"> 
<table> 
    <tr> 
     <td> 
      <select name="module" id="mClick"> 
       <option value="">Select Mod</option> 
       <option value="1">Mod 1</option> 
       <option value="2">Mod 2</option> 
       <option value="3">Mod 3</option> 
      </select> 
     </td> 
     <td> 
      <select name="state" id="sClick"> 
       <option value="">Select State</option> 
       <option value="1">State 1</option> 
       <option value="2">State 2</option> 
      </select> 
     </td> 
     <td> 
      <select name="city" id="cClick"> 
       <option value="">Select City</option> 
       <option value="1">City 1</option> 
       <option value="2">City 2</option> 
      </select> 
     </td> 
     <td> 
      <select name="services" id="srClick"> 
       <option value="">Select Services</option> 
       <option value="1">Services 1</option> 
       <option value="2">Services 2</option> 
      </select> 
     </td> 
    </tr> 
</table> 

在场景3中,我使用了这个功能,但是它删除了所有,除了最后一个选择。任何想法是我失踪?由于

$('#lForm select[id!="mClick"] select[id!="sClick"] select[id!="cClick"] option[value!=""]').remove().end(); 
+0

对不起错字,删除它,但仍然不能正常工作。 –

+1

您的元素ID不同,即'在jQuery中使用'makeClick'和在HTML中使用'mClick' – Satpal

+0

如果它们被清空,那么它们如何被重新填充? –

回答

5

以您描述的方式清除选项的最简单方法是使用options.length = 1。此外,您可以利用每个下拉列表清除逻辑上跟随它的列表,以便您只需声明一个更改处理程序。

$('#lForm select').on('change', function() { 
    if (this.selectedIndex > 0) { 
    var $others = $(this).closest('table').find('select'), 
    current = $others.index(this); // find current 

    while (++current < $others.length) { 
     // for each following drop down 
     $others.get(current).options.length = 1; 
    } 
    } 
}); 

Demo

我不知道你将如何重新填充下拉菜单虽然:)

+0

作品!非常感谢!使用ajax GET来填充它,只是不想让服务器发送一个空的

+0

@ user2035819是的,这就是数组在JavaScript中被“剪辑”的原因:) –

16

可以使用大于:gt()选择的jQuery这个

$('#lForm select[id!="makeClick"] select[id!="stateClick"] select[id!="cityClick"] option:gt(0)').remove().end(); 

这将删除的所有选项大于0

+0

改为:gt()http://jsfiddle.net/qVaaJ/6/最后2选择,完全清空。当选择一个mod。我试图保持所有值=“”可见 –

13

您可以使用not(:first)

$('#lForm select[id!="makeClick"] select[id!="stateClick"] select[id!="cityClick"] option:not(:first)').remove().end(); 
+0

城市和州选择mod时完全清空。 http://jsfiddle.net/qVaaJ/8/ –

1

试试这个

$('#lForm select').change(function(){ 
    var $selects = $('#lForm select'); 
    var idx = $selects.index(this); 

    // Use `val` function to clear the selected values or Use `remove` function to remove the element. 
    $selects.filter(':gt(' + idx +')').val(''); 

}); 
47

试试这个

yourSelect.find('option').not(':first').remove();

0

asssign普通班上你的Dropdow然后

$('。general option [value!=“”]')。remove();

这将删除除第一个,其值是空 希望这将有助于

5

它的工作

$('#mClick').change(function() { 
    $('#sClick, #cClick, #srClick').find("option:gt(0)").remove(); 
}); 
$('#sClick').change(function() { 
    $('#cClick, #srClick').find("option:gt(0)").remove(); 
}); 
$('#cClick').change(function() { 
    $('#srClick').find("option:gt(0)").remove(); 
}); 
2

我一直在寻找一个行代码,我大量的研究后发现,所有的选项最简单和最好的一行代码,以除去第一个内容。

JQuery的,

$('#ddlId option:not(:first)').remove(); 
相关问题