根据选择选项显示div

哦,帮助,我已经尝试了一百万种不同的方法,但它仍然不起作用:如果从选择/选项框中选择更新或最终,它应该显示其中包含输入字段的div。 它只执行switch语句中默认显示的内容。 当然,只有在做出选择后我才能确定它是否显示输入字段。

在头部…

$(document).ready(function(){ $('#needfilenum').hide(); var optionValue = $("#needtoshow").val(); switch (optionValue) { case 'update': $("#needfilenum").show(); break; case 'final': $("#needfilenum").show(); break; default: $("#needfilenum").hide(); break; } }); //}); ' Select Something Update Final Vegan  

我可以更改交换机上的默认值,这似乎决定了它所显示的内容

 // $("#needtoshow").change(function() { // switch ($(this).val()) 

如果要在下拉列表更改时显示div并隐藏,则需要绑定到change事件,例如:

 $(document).ready(function() { $('#needfilenum').hide(); $('#needtoshow').bind('change', function() { var optionValue = $("#needtoshow").val(); switch (optionValue) { case 'update': case 'final': $("#needfilenum").show(); break; default: $("#needfilenum").hide(); break; } }); }); 

在您的代码中,switch语句仅在首次加载页面时运行一次。

您可能希望在选择框上绑定事件侦听器。 ( 改变事件 )所以你会有以下几点:

 $("#oldfilenum").change(function() { var optionValue = $(this).val(); switch (optionValue) { case 'update': $("#needfilenum").show(); break; case 'final ': $("#needfilenum").show(); break; default: $("#needfilenum").hide(); } }; 

尝试这样的事情:

 var selectBox = $("#oldfilenum"), magicDiv = $("#needfilenum"); selectBox.bind("change", function() { var val = this.value; if (val === "update" || val === "final") { magicDiv.show(); } else { magicDiv.hide(); } }); 

当然你可以使用switch代替,或者使用[]可接受的值并执行它it.indexOf(val) > -1或者其他什么。

当Victor评论另一个答案时, change了MSIE中的blur ,所以你可能想要使用另一个事件,如果这是一个问题,也许是mouseup

您应该查看change()事件。 将其附加到然后执行逻辑。

您的检查function只运行一次,而不是每次更改选择字段。 您需要将一个onchange处理程序放入select字段: