でラジオボタンをチェック済みとしてマークしようとしていますがclick()
、ラジオが無効になっていると機能しません。
私は何をすべきか?
メソッドを使用したい.prop()
。.attr()
クロスブラウザの真実性を検出するのは難しい
$('input:radio:disabled').prop('checked', true);
^これにより、無効になっているものが自動的にチェックされます。
ある種のクリックイベントなどでそれをしたい場合は、次のようにします。
$('input:radio').prop('checked', true);
唯一の解決策は javascript/jquery からのものです - (jquery の最も単純な例)
<input type="radio" id="test" name="test_name" disabled="disabled" />
$(document).ready(function() {
$('#test').attr('checked', 'checked');
});
このjsFiddle http://jsfiddle.net/7XevT/1/を参照してください
disabled
入力はクリックイベントをトリガーしません。ハックな方法は、ラジオを別の要素でラップすることです。
<span class='radio'><input type='radio' disabled/></span>
$('.radio').click(function(){
var $input = $(this).find('input');
$input.prop('checked', !$input.prop('checked'))
})
disabled
しかし、チェック状態を変更できるのに、なぜ入力が必要なのかわかりません!!
click
event* を使用するのは間違ったアプローチです。無効化された要素は (無効化されているため) クリックされても反応しないため、click
イベントをトリガーしても意味がありません。
<input type="radio" />
<input type="checkbox" />
要素には、checked
チェック状態を変更するために変更する必要があるプロパティがあります。
<input id="r" type="radio" name="foo" value="bar" disabled />
<script type="text/javascript">
document.getElementById('r').checked = true;
</script>
<input id="r" type="radio" name="foo" value="bar" disabled />
<script type="text/javascript">
$('#r').prop('checked', true);
</script>
* または関数、どちらを使用しているかわかりません。jQuery.fn.click
イベントをトリガーするのは だと思います。
ゲームには少し遅れていますが<span>
、ラジオボタンの上に配置できる一時を追加できます。これにより、クリックしているような効果が得られます。
$('input[disabled="disabled"]').each(function(){
$(this).wrap('<span style="position:relative;"></span>')
$(this).parent().append('<span class="disabled" style="left:0; top:0; position:absolute; display:block; width:100%; height:100%;"> </span>');
})
$('.disabled').click(function(){
$(this).prev().removeAttr('disabled').attr('checked', 'checked').attr('disabled', 'disabled').unwrap();
$(this).remove();
})
フィドルをチェックしてください - http://jsfiddle.net/FTymF/
無効化されたラジオ ボタンを切り替えることもできます。
$('.disabled').click(function(){
if($(this).prev().attr('checked'))
$(this).prev().removeAttr('disabled').removeAttr('checked').attr('disabled', 'disabled');
else
$(this).prev().removeAttr('disabled').attr('checked','checked').attr('disabled', 'disabled');
})
フィドルをチェックしてください - http://jsfiddle.net/FTymF/1/
これを行う唯一の方法は、要素 (div など) をラジオ ボタンの前に配置し、そのクリックをチェックすることです。
無効化された要素ではマウス イベントが無効化されます (正当な理由により... 無効化しました!)
ただし、必要なことを行うためのより良い方法がおそらくあります。無効になっているラジオボタンをクリックする人がいるとは思えません。さらに、ラジオ ボタンをクリック可能にしたい場合は、無効にしないでください。