2016-06-27 2 views
0

私はタイプ=「ラジオ」のいくつかの入力を持つラジオ入力がクリックされたときに発生しません:jQueryの変更は、プログラム

<div style="margin:10px;"><input type="radio" name="cei" id="clike" /><label style="margin:0 10px" for="clike">like</label></div> 
<div style="margin:10px;"><input type="radio" name="cei" id="ccomment" /><label style="margin:0 10px" for="ccomment">like</label></div> 
<div style="margin:10px;"><input type="radio" name="cei" id="clink" /><label style="margin:0 10px" for="clink">like</label></div> 

と変更機能をいくつかのものを行うか、それらのそれぞれがチェックされている場合:

 $('input:radio[name="cei"]').change(
function(){ 
    if ($(this).is(':checked') && $(this).next().html() == 'link') 
     $('#clink-val').removeAttr('disabled');else $('#clink-val').attr('disabled','disabled'); 
    if ($(this).is(':checked') && $(this).next().html() == 'Multiple Choices') 
    $(this).closest('fieldset').find('.multiplechoices-item').slideDown(); else $(this).closest('fieldset').find('.multiplechoices-item').slideUp(); 
}); 

ここまでのコードは完全に機能します。上記のラジオボタンとしての は、サーバー側のコードを介して生成され、ユーザーに対しては2ラジオ、他のユーザーに対しては5ラジオだけである可能性があります。最初のラジオをチェックしてほしいです。上記のコードの両方が、最初のラジオのchecked属性を設定しながら、

$('input:radio[name="cei"]').first().attr('checked','checked'); 

$('input:radio[name="cei"]').first().click(); 

をそれらのどれため$('input:radio[name="cei"]').change()は発生しません:私は試してみました。

+1

をトリガーする必要があります。 – dan08

+0

$( 'input:radio [name = "cei"]')。first()。クリック();変更をトリガーします。それは私のためにうまくいきます。これをチェックしてくださいhttps://jsfiddle.net/atg5m6ym/6510/ –

+0

@ dan08だから私はチェック値を設定し、また変更を開始する必要がありますか?チェックされたステータスが変更されている間に変更が発生しないのはなぜですか? –

答えて

1

あなたはそれはあなたがにバインドされたものですので、あなたは "変更" イベントを発生すべき変更イベント

$('input:radio[name="cei"]').first().prop('checked',true).change(); 
0

代わりの

$('input:radio[name="cei"]').change(function(){}) 

$('body').on('change','input:radio[name="cei"]',function(){}) 

dinamically追加された要素を試してみてください、あなたが値を変更した後は、変更イベントをトリガーすることができ、この

2

のようなイベントリスナーを必要とします。

$('input:radio[name="cei"]').first().attr('checked','checked').change(); 

$('input:radio[name="cei"]').change(function(){ 
 
    console.log('changed'); 
 
    if ($(this).is(':checked') && $(this).next().html() == 'link') 
 
     $('#clink-val').removeAttr('disabled');else $('#clink-val').attr('disabled','disabled'); 
 
    if ($(this).is(':checked') && $(this).next().html() == 'Multiple Choices') 
 
    $(this).closest('fieldset').find('.multiplechoices-item').slideDown(); else $(this).closest('fieldset').find('.multiplechoices-item').slideUp(); 
 
}); 
 

 

 
$('input:radio[name="cei"]').first().attr('checked','checked').change(); 
 
$('input:radio[name="cei"]').eq(1).attr('checked','checked').change(); 
 
$('input:radio[name="cei"]').eq(1).attr('checked','checked').change();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div style="margin:10px;"> 
 
    <input type="radio" name="cei" id="clike" /><label for="clike">like</label> 
 
</div> 
 
<div style="margin:10px;"> 
 
    <input type="radio" name="cei" id="ccomment" /><label for="ccomment">like</label> 
 
</div> 
 
<div style="margin:10px;"> 
 
    <input type="radio" name="cei" id="clink" /><label for="clink">like</label> 
 
</div>

関連する問題