2013-07-23 35 views
0

我试图从下拉菜单中选择“其他”时显示文本字段。它工作正常,但只在第一时间。我需要它在每个页面上多次工作。 我试过.each(),.foreach(),但似乎无法找到正确的位置。 我得到它如何在多个下拉菜单带隐藏文本框的多页下拉菜单

JS功能:

$(window).load(function(){ 
    $('#myselect').change(function() { 
     if($(this).val() == 2) 
      $('#txtData').show(); 
     else 
      $('#txtData').hide(); 
    }); 
    } 

) 

HTML:

<select id="myselect"> 



    <option value="" selected="selected">-Select One-</option> 

    <option value="No">No</option> 
    <option value="2">Yes</option> 

</select> 
<br /> 
<input type="text" id="txtData" placeholder="Please Specify..." class="other" style="display:none;" /> 
+0

是否所有的情况下,具有相同的ID? ID必须是唯一的。 – Barmar

+0

使用一个类,这样你就可以用一个操作来隐藏和显示它们。 – Barmar

+0

ids在整个页面中应该是唯一的,jQuery假定情况是这样,它只会返回一个结果,即第一个结果。 – Populus

回答

0

我不知道你正在尝试做的,但看看是否 帮助你:

jsfiddle Demo change()

我居然切换代码中使用class,而不是ID's并创建了几个输入文本为每选择框。

否则请尝试更具体。

代码

$('.other').hide(); 

$('.sectos').change(function() { 
    if($(this).val() == 3){ 
     $(this).next('input').fadeIn(); 
    } 
    else{ 
     $(this).next('input').fadeOut();   
    } 
}); 
+0

这正是我想要做的。非常感谢你 – 444

+0

好吧,玩得开心,不要犹豫,问你是否不明白是什么。 –

-1

这是我的第一个答案!要做到这一点

一种方法是对每一个输入“组”单独的函数,但我相信你不想这样做,所以...

我包两个这样的选择的/输入配对到字段集如下:

<fieldset> 
    <select id="myselect"> 
     <option value="" selected="selected">-Select One-</option> 
     <option value="No">No</option> 
     <option value="2">Yes</option> 
    </select> 
    <br /> 
    <input type="text" id="txtData" placeholder="Please Specify..." class="other" style="display:none;" /> 
</fieldset> 
<fieldset> 
    <select id="myselect2"> 
     <option value="" selected="selected">-Select One-</option> 
     <option value="No">No</option> 
     <option value="2">Yes</option> 
    </select> 
    <br /> 
    <input type="text" id="txtData2" placeholder="Please Specify..." class="other" style="display:none;" /> 
</fieldset> 

JS:

$(document).ready(function(){ 
    $("fieldset").each(function(){ 
     $(this).change(function(){ 
      if($(this).children("select").val() == 2){ 
       $(this).children("input").show(); 
      } 
      else { 
       $(this).children("input").hide(); 
      } 
     }); 
    }); 
}); 

这样你现在可以为每个组的输入的父元素。您可以使用div或您想要使用的任何其他类似效果。

希望这有助于!

+0

您可以使用'.next('input')' –

+0

如果这些分组之间存在额外的不相关输入会怎么样?我同意他的背景有点不清楚。 –

+0

根据他所描述的,他是一个很大的词,他只是试图给用户输入选项来描述“其他”,在构建他应该处理下一个()相关输入时,他甚至可以使用.next(' id或.class')以获得更高的可靠性。 –