如何根据所选的另一选择选项更改选择选项?

如何根据所选的另一选择选项更改选择选项?

问题描述:

这是我的html。如何根据所选的另一选择选项更改选择选项?

<select id="type"> 
<option value="item1">item1</option> 
<option value="item2">item2</option> 
<option value="item3">item3</option> 
</select> 

<select id="size"> 
<option value="">-- select one -- </option> 
</select> 

这里是jquery我试过但不成功。

$(document).ready(function() { 

if($("#type").val("item1")) 
{ 
    $("#size").html("<option value='test'>test</option><option value="test2">test2</option>); 
} 
elseif($("#type").val("item2")) 
{ 
    $("#size").html("<option value='anothertest1'>anothertest1</option>"); 
} 

}); 

基本上我想要做的是如果在#type中选择一个选项,然后大小选择填充与它相关的选项。我怎样才能做到这一点?

感谢

这里是你正在尝试做一个例子:

http://jsfiddle.net/YPsqQ/

$(document).ready(function() { 
 
    $("#type").change(function() { 
 
     var val = $(this).val(); 
 
     if (val == "item1") { 
 
      $("#size").html("<option value='test'>item1: test 1</option><option value='test2'>item1: test 2</option>"); 
 
     } else if (val == "item2") { 
 
      $("#size").html("<option value='test'>item2: test 1</option><option value='test2'>item2: test 2</option>"); 
 
     } else if (val == "item3") { 
 
      $("#size").html("<option value='test'>item3: test 1</option><option value='test2'>item3: test 2</option>"); 
 
     } else if (val == "item0") { 
 
      $("#size").html("<option value=''>--select one--</option>"); 
 
     } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<select id="type"> 
 
    <option value="item0">--Select an Item--</option> 
 
    <option value="item1">item1</option> 
 
    <option value="item2">item2</option> 
 
    <option value="item3">item3</option> 
 
</select> 
 

 
<select id="size"> 
 
    <option value="">-- select one -- </option> 
 
</select>

+1

这是一种更清晰的例子。在这种情况下,内容被重构为JavaScript数组。这极大地简化了“改变”逻辑。更容易维护。 http://jsfiddle.net/YPsqQ/1/ – rcravens 2010-12-18 23:18:14

+0

感谢那正是我需要的。我不太确定,下次尝试==时,请尝试谢谢。 – sarmenhbbi 2010-12-18 23:19:40

+0

greaaaaaat答案!,现在我想尝试更改布局。 – Bhimbim 2013-09-12 07:41:17

你如果声明是设置值。你想通过这样做比较

if ($("#type").val() == "item1") { 
... 
} 

daLizard是正确的。你想要一个事件处理程序。当页面DOM准备好使用时,document.ready只运行一次。

我不明白你想达到什么,但你需要一个事件监听器。例如:

$('#type').change(function() { 
    alert('Value changed to ' + $(this).attr('value')); 
}); 

这会给你所选选项标记的值。

+0

您可能想要在处理程序中使用$(this).val()。 – Vadim 2010-12-18 23:16:40

你可以在HTML5中使用数据标记,做这个使用此代码:

<script> 
 
\t $('#mainCat').on('change', function() { 
 
\t \t var selected = $(this).val(); 
 
\t \t $("#expertCat option").each(function(item){ 
 
\t \t \t console.log(selected) ; 
 
\t \t \t var element = $(this) ; 
 
\t \t \t console.log(element.data("tag")) ; 
 
\t \t \t if (element.data("tag") != selected){ 
 
\t \t \t \t element.hide() ; 
 
\t \t \t }else{ 
 
\t \t \t \t element.show(); 
 
\t \t \t } 
 
\t \t }) ; 
 
\t \t 
 
\t \t $("#expertCat").val($("#expertCat option:visible:first").val()); 
 
\t \t 
 
}); 
 
</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
 
<select id="mainCat"> 
 
\t \t \t <option value = '1'>navid</option> 
 
\t \t \t <option value = '2'>javad</option> 
 
\t \t \t <option value = '3'>mamal</option> 
 
\t \t </select> 
 
\t \t 
 
\t \t <select id="expertCat"> 
 
\t \t \t <option value = '1' data-tag='2'>UI</option> 
 
\t \t \t <option value = '2' data-tag='2'>Java Android</option> 
 
\t \t \t <option value = '3' data-tag='1'>Web</option> 
 
\t \t \t <option value = '3' data-tag='1'>Server</option> 
 
\t \t \t <option value = '3' data-tag='3'>Back End</option> 
 
\t \t \t <option value = '3' data-tag='3'>.net</option> 
 
\t \t </select>

+1

这看起来像要走的路,如果这是正确的,我会给你一个upvote,但FYI的代码段不起作用。 – 2016-06-13 18:36:46

+0

它的工作,但在第一次运行的组合框onchange事件不会提高,如果你改变第一个组合框的值这个工作很好....这是一个样本,通过选择.....为改变价值真实世界你最重构这段代码像魅力一样工作:) – 2016-06-14 16:37:20