Javascript隐藏输入字段基于选择更改TEXT而不是VALUE

时间:2011-03-02 12:29:10

标签: javascript jquery

我有一个从SQL填充的下拉列表(select)。这是动态的,因此可以随时改变。我需要根据所选项TEXT而不是其值来隐藏输入字段。这是我目前的代码:

<select name='addEventEventName' style="width:180px" id="addEventEventName" onchange="EventChanged(this)">

                </select>
                <script>                    
                    function EventChanged(changedEvent) 
                    {
                        if (changedEvent.value == "val1" || changedEvent.value == "val2")
                        { $("#jmtest").hide(); }
                        else
                        { $("#jmtest").show(); }
                    }
                </script>

现在效果很好。但如果“val1”和“val2”在未来发生变化,它将会破裂。

我想使用Sickness(val1)和Holiday(val2)代替。我需要改变什么?

4 个答案:

答案 0 :(得分:1)

<script type="text/javascript">                    
function EventChanged(selectEl) 
                    {
  var text = selectEl.options[selectEl.selectedIndex].text;
  if (text == "Sickness" || text == "Holiday")
     { $("#jmtest").hide(); }
  else
     { $("#jmtest").show(); }
}
</script>
是的吗?我发现使用文本标签作为任何数据决策的基础通常是不好的做法。这打破了MVC模式。

答案 1 :(得分:1)

我认为这就是你要找的东西:

<强> HTML:

<select name="ddlSample" id="ddlSample">
    <option value="1">Sickness</option>
    <option value="2">Holiday</option>
    <option value="3">Sample1</option>
    <option value="4">Sample2</option>
</select>

<强> JQuery的:

$("#ddlSample").change(function(){
    if($(this[this.selectedIndex]).text()=="Sickness" || $(this[this.selectedIndex]).text()=="Holiday")
    {
        alert("Hide input field here.");
        //$("#jmtest").hide();
    }    
    else
    {
        alert("Show input field here.");
        //$("#jmtest").show(); 
    }    
});

答案 2 :(得分:0)

changedEvent.text== "Sickness" || changedEvent.text== "Holiday"

在if条件下使用此选项。即用文本属性更改组合的value属性。

答案 3 :(得分:0)

changedEvent.options[changedEvent.selectedIndex].text == "Sickness" || changedEvent.options[changedEvent.selectedIndex].text == "Holiday"