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

Jqueryの最も近いものは、変更しようとしている祖先要素を探しinputますが、そうではありません。

これを機能させるには、おそらくHTMLを少し変更する必要があります。1つの提案は、両方の要素をラップする親要素を作成し、2番目の入力にクラスを追加することです。このようなもの:

<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')
于 2011-05-17T15:03:24.380 に答える
1

変更する1つのこと:私はあなたができるとは思わない

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

セレクターは常に(trueまたはfalseではなく)jQueryオブジェクトを返すため。代わりに試してください

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

次に、closestは祖先を探しているので、チェックボックスを関連するinput;に接続するためのより良い方法が必要です。多分それらを両方ともラッパーdivに入れますか?次に、親(ラッパー)に移動して、そこから検索を実行できます。

于 2011-05-17T15:07:36.707 に答える