2016-08-23 9 views
0

チェックボックスをオンまたはオフにした後、次の入力を有効にしたり無効にしたりするにはどうすればいいですか?
私はjQueryで試していますnextAllしかし、divが要素を含む場合、これは機能しません。私のHTML:divの内部にある次の入力フィールドを無効にして有効にします

$(document).ready(function() 
{ 
    $('.box').change(function() 
    { 
     var set = $(this).is(':checked') ? false : true; 
     $(this).nextAll('div.box-2 input').first().attr('disabled', set); 
    }); 
}); 

私が知っている何かが間違っているのですが、私はそれを動作させることはできません。

<input class='box' type='checkbox'/>Option - 
<div class='box-2' style='display: inline-block'> 
    Quantity <input type='number' disabled/> 
</div> 
<input class='box' type='checkbox'/>Option 2 - 
<div class='box-2' style='display: inline-block'> 
    Quantity <input type='number' disabled/> 
</div> 

は、私が実際には次のjQueryをしようとしています。 JS Fiddle here

+0

(、「無効」真) '.propを試してみてください;'チェックボックス –

答えて

1

あなたは、チェックボックス(あなたのケースではDIV)後とした後、次の要素を見つけるためにnext()機能を使用する必要がありますこのの入力がこのdiv内にあります。あなたのケースでは

$(document).ready(function() 
 
{ 
 
    $('.box').click(function() 
 
    { 
 
     var set = $(this).is(':checked') ? false : true; 
 
     $(this).next('div.box-2').find('input').attr('disabled', set) 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input class='box' type='checkbox'/>Option - 
 
<div class='box-2' style='display: inline-block'> 
 
    Quantity <input type='number' disabled/> 
 
</div> 
 
<input class='box' type='checkbox'/>Option 2 - 
 
<div class='box-2' style='display: inline-block'> 
 
    Quantity <input type='number' disabled/> 
 
</div>

+0

偉大な今働いた。解決と説明のためにありがとう。 – Hypister

+0

ラベル要素を使用するとうまくいきません:https://jsfiddle.net/Lvf7znxm/5/ オプション2の入力をご覧ください。 オプション2 - '(しかし、あなたはボックス2にする必要があります)を参照しているので、@Hypisterの権利、 – Hypister

+0

です。これは、このラベルタグを削除した場合にのみ機能します。 – semanser

1

next('.box-2')を使用し、その後にinputを見つける必要があります。

HTML:

<input class='box' type='checkbox'/>Option - 
<div class='box-2' style='display: inline-block'> 
    Quantity <input type='number' disabled/> 
</div> 
<input class='box' type='checkbox'/>Option 2 - 
<div class='box-2' style='display: inline-block'> 
    Quantity <input type='number' disabled/> 
</div> 

のjQuery:

$(document).ready(function(){ 
    $('.box').change(function(){ 
     var el = $(this).next('.box-2').find('input'); 
     if($(this).is(':checked')){ 
      el.prop('disabled', false); 
     } 
     else{ 
      el.prop('disabled', true); 
     } 
    }); 
}); 

の作業例:https://jsfiddle.net/Lvf7znxm/4/

+0

には、あなたの答えをありがとう、これもチェックボックスを無効にします。 – Hypister

+0

@showdev問題は、box-2 div内の入力フィールドが無効になっていないか、ボックスの近くにあるチェックボックスをオンまたはオフにすると有効になっていないということです。 – Hypister

+0

@Hypisterコードを更新しました。もう一度やり直してください。 –

0

、u)は(.next使用する必要があります。 .next()は次の要素をフェッチし、その要素に対して任意の操作を実行できます。

$('.box').click(function() 
{ 
    var set = $(this).is(':checked') ? false : true; 
    $(this).next('div.box-2').find('input').attr('disabled', set) 
}); 
関連する問題