2个下拉菜单 - 第一个选项删除第二个选项

时间:2014-11-21 11:49:43

标签: jquery select option

我有两个选择 - “段”和“兴趣”选项。

我想从第二个菜单中删除第一个菜单上的值的特定选项。 如果我打电话给 $("#interest option[value='forhim']").remove();

它删除了此选项,但在下面的示例中,它不起作用/删除。

<script>
$('#segment').change(function(){
    if($(this).val() == 'forher'){ // forher is value in #segment which should remove value forhim '
      $("#interest option[value='forhim']").remove();
    }
}); 
</script>

HTML

                        <div class="col-md-4 col-sm-4"> 
                            <select class="dropdown" name="segment" id="segment" tabindex="1" onchange="this.form.submit()">
                                <option value="" <?php if($segment == "") echo "selected"; ?> >For who?</option>
                                <option value="forher" <?php  if($segment == "forher") echo "selected"; ?> >forher</option>
                                <option value="forhim" <?php  if($segment == "forhim") echo "selected"; ?> >forhim</option>
                            </select>
                        </div>

                        <div class="col-md-4 col-sm-4"> 
                            <select class="dropdown" name="interest" id="interest" tabindex="1" onchange="this.form.submit()">
                                <option value="" <?php if($interest == "") echo "selected"; ?> >Person type</option>
                                <option value="forhim" <?php  if($interest == "forhim") echo "selected"; ?> >For him</option>
                                <option value="sport" <?php  if($interest == "sport") echo "selected"; ?> >Sport</option>
                                <option value="tehno" <?php  if($interest == "tehno") echo "selected"; ?> >Techno</option>
                            </select>

JSFIDDLE:http://jsfiddle.net/0zxxrmta/1/

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

而不是if的列表,我更喜欢这种方式来解决问题。

您可以在此处查看代码:http://jsfiddle.net/afilini/vt2yk7oa/1/

Javascript代码:

$('#segment').change(function(){
    var table = [];
    table['forhim'] = 'forher'; //This means: when i select what is between [ ] (in this case forhim), remove what is after the = (in this case forher). You can add multiple rules like this one

    $("#interest option[value='" + table[$(this).val()] + "']").remove();
}); 

答案 1 :(得分:0)

为您的选择选项声明值属性。

HTML:

<select id="segment">
   <option>Select</option>
   <option>forher</option>
</select>
<select id="interest">
   <option>Select</option>
   <option value="forhim">forhim</option>
</select>

的JQuery:

$('#segment').change(function(){
    if($(this).val() == 'forher'){ // forher is value in #segment which should remove value forhim '
      $("#interest option[value='forhim']").remove();
    }
}); 

演示:

http://jsfiddle.net/3m524vw0/

答案 2 :(得分:0)

没有太多信息可以继续,但我的猜测是您需要使用$(document).ready。他们将它作为内联<script>,脚本可能会尝试将change事件处理程序附加到尚未添加的dom元素。

&#13;
&#13;
$(document).ready(function() {
	$('#segment').change(function(){
		if($(this).val() == 'forher'){ 
		  $("#interest option[value='forhim']").remove();
		}
	}); 
});
&#13;
&#13;
&#13;