Как сделать поле ввода активным после того, как я поставлю галочку, используя JQuery? - PullRequest
0 голосов
/ 17 мая 2011

У меня есть код, который я написал, но он не работает, см. Ниже:

$('#Reserve, #BuyItNowPrice, #featureplate').attr('disabled','disabled');
$('.fake-fieldset .fake-input').css({'background-color':'#e1e1e1'});

$('.enable').click(function(){

    if($('.enable:checked')){
        $(this).closest('input').removeAttr('disabled');
    }
    else{
        $(this).closest('input').attr('disabled','disabled');
    }
});

Эта структура HTML повторяется 3 раза в моем коде, см. Ниже

   <strong><input type="checkbox" class="enable" /> Specify Buy It Now Price</strong>
   <div class="fake-fieldset">
     <div class="fake-input">
       <span>&pound;&nbsp;</span>
         <input type="text" id="BuyItNowPrice" name="BuyItNowPrice" value="" />
     </div>
   </div>

Я хотел бы, чтобы при проверке .enable ближайший вход стал активным, чтобы пользователь мог ввести значение

Любая помощь будет принята с благодарностью, Спасибо

Ответы [ 2 ]

1 голос
/ 17 мая 2011

Одна вещь, которую нужно изменить: я не думаю, что вы можете сделать

if($('.enable:checked'))

, поскольку селектор всегда возвращает объект jQuery (а не true или false);вместо этого попробуйте

if($('.enable).is(:checked'))

Во-вторых, поскольку closest ищет предка, вам нужен лучший способ соединить флажок с соответствующим input;может положить их обоих в обёртку div?Тогда вы можете подойти к родителю (обертке) и найти оттуда.

1 голос
/ 17 мая 2011

Jquery ближайший ищет элемент-предок, который input, который вы пытаетесь изменить, не является.

Вам, вероятно, нужно немного изменить свой HTML, чтобы это работало. Одно из предложений - создать родительский элемент, чтобы обернуть оба элемента и добавить класс ко второму входу. Как то так:

<div class='enablearea'>
  <strong><input type="checkbox" class="enable" /> Specify Buy It Now Price</strong>
  <div class="fake-fieldset">
    <div class="fake-input">
      <span>&pound;&nbsp;</span>
      <input type="text" id="BuyItNowPrice" name="BuyItNowPrice" value="" class='enablechange' />
    </div>
  </div>
</div>

Затем вы можете найти этот 2-й вход, как это:

$(this).parent('.enablearea').find('.enablechange')
...