JQuery показать / скрыть поле - PullRequest
0 голосов
/ 16 июля 2011

У меня проблемы с тем, чтобы мое текстовое поле скрывалось / показывалось правильно.Вот пример:

Пример JFiddle

Я хочу, чтобы текстовое поле показывалось, только когда выбранное значение равно единице, и было скрыто для всегоостальное.Часть с флажками работает правильно.

Код, скопированный из 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>

1 Ответ

2 голосов
/ 16 июля 2011

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

Вместо использования $(':text').show() вам нужно $(this).siblings(':text').show().

Это позволит выбрать соответствующее текстовое поле, а не все из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...