2011-07-16 212 views
0

我遇到了让我的文本字段隐藏/正确显示的问题。这里是例子:jquery显示/隐藏字段

JFiddle Example

我要的是当选择的值等于一个被隐藏了一切文本字段只显示。复选框部分工作正常。

代码从复制的jsfiddle:

<html> 
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
<title>Test Page</title> 
<body> 
    <table id="testList"> 
    <tbody> 
     <tr> 
     <td><input type='checkbox'></td> 

     <td><select> 
    <option value="0">Volvo</option> 
    <option value="1">Saab</option> 
    <option value="2">Mercedes</option> 
    <option value="3">Audi</option><input type='text' style="display: none"> 
      </select> 
</td> 
     </tr> 
     <tr> 

     <td><input type='checkbox'></td> 
<td><select> 
    <option value="0">Volvo</option> 
    <option value="1">Saab</option> 
    <option value="2">Mercedes</option> 
    <option value="3">Audi</option> 
</select><input type='text' style="display: none"> 
     </td> 
     </tr> 
     <tr> 
     <td><input type='checkbox'></td> 
<td><select> 
    <option value="0">Volvo</option> 
    <option value="1">Saab</option> 
    <option value="2">Mercedes</option> 
    <option value="3">Audi</option> 
    </select> <input type='text' style="display: none"> 
</td> 
     </tr> 
    </tbody> 
    </table> 
<script> 
jQuery(function($) { 


     $("select").change(function() { 
     var $this = $(this), 
      $checkbox = $this.parent().prev().find(":checkbox"); 

     if ($this.val() != 0) { 
     $checkbox.attr("disabled", true); 
      if($this.val() == 1){ 
      $(":text").show(); 
      } 
      else{ 
       $(":text").hide(); 
      }  


     } else { 
      $checkbox.removeAttr("disabled"); 
     } 

      }); 

     $(":checkbox").change(function() { 
     var $this = $(this), 
      $select = $this.parent().next().find("select"); 

     if ($this.is(":checked")) { 
      $select.attr("disabled", true); 
     } else { 
      $select.removeAttr("disabled"); 
     } 
     }); 

    }); 
</script>  
</body> 
</html> 

回答

2

http://jsfiddle.net/vsYB8/20/

而不是使用$(':text').show()你需要$(this).siblings(':text').show()

这将选择相应的文本框,而不是全部。

+0

如何让文本字段在值为0时也隐藏? – billy