0

我有我写的这段代码,但它似乎没有工作,见下文:

$('#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最近的输入应该变为活动状态以便用户可以键入一个值

任何帮助将不胜感激,谢谢

4

2 回答 2

1

要改变的一件事:我认为你做不到

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

因为选择器总是返回一个 jQuery 对象(而不是 true 或 false);而是尝试

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

其次,由于closest正在寻找祖先,您需要一种更好的方法将复选框与相关的input; 也许将它们都放入包装器div中?然后你可以去父(包装器)并从那里进行查找。

于 2011-05-17T15:07:36.707 回答
1

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>

然后你可以像这样找到第二个输入:

$(this).parent('.enablearea').find('.enablechange')
于 2011-05-17T15:03:24.380 回答