0

哦,帮助,我已经尝试了一百万种不同的方法,但它仍然不起作用:如果您从选择/选项框中选择更新或最终,它应该显示其中包含输入字段的 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 id="needtoshow" >  
<option id="dfaut" value="0">Select Something</option>
<option id="update" value="update">Update</option>
<option id="final" value="final">Final</option>
<option id="allergy"value="allergy">Vegan</option>  
</select>
<div id="needfilenum"  style="background:#f00;">  
<input type="text" name="wharever"   />
</div>  

我可以更改开关上的默认设置,这似乎决定了它显示的内容也尝试过

//  $("#needtoshow").change(function() {  

//      switch ($(this).val())
4

5 回答 5

4

如果你想让 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 语句仅在页面首次加载时运行一次。

于 2009-11-06T23:33:40.357 回答
2

您可能希望在选择框上绑定一个事件侦听器。(更改事件)所以你会有一些类似的东西:

$("#oldfilenum").change(function() {
  var optionValue = $(this).val();
  switch (optionValue) { 
    case 'update': 
      $("#needfilenum").show(); 
      break; 
    case 'final ': 
      $("#needfilenum").show(); 
      break; 
    default: 
      $("#needfilenum").hide(); 
  } 
};
于 2009-11-06T22:37:05.153 回答
1

尝试这样的事情:

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或其他。

正如维克多评论另一个答案,在 MSIE 中change触发,所以如果这是一个问题,blur你可能想要使用另一个事件mouseup,也许.

于 2009-11-06T22:36:32.550 回答
0

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

<select id="needtoshow" onchange="your_function_name_here()">
于 2009-11-06T23:32:36.597 回答
0

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

于 2009-11-06T22:35:49.913 回答