jQuery UIダイアログポップアップでチェックされたラジオボタンを覚えておきたいという問題があります。
奇妙な動作に遭遇したので、JSFiddle でモックアップしました。フィドルは基本的に、作成時に 3 つのラジオの選択肢のいずれかをランダムに選択します。しかし、すぐに機能しなくなります。
removeAttr('checked') を行う行の有無にかかわらず試しました。
ダイアログが機能しなくなるのを確認するには、[開く] ダイアログをクリックして数回閉じる必要があります。Chrome の最新バージョンでこれをテストしています。
HTML
<div id="dialog" style="display:none;">
<input type="radio" class="left" name="rentFrequency" value="1" />
<span class="left"> Monthly   </span>
<input type="radio" class="left" name="rentFrequency" value="2" />
<span class="left"> Quarterly   </span>
<input type="radio" class="left" name="rentFrequency" value="3" />
<span class="left"> Annualy   </span>
</div>
<input type="button" name="dialogOpen" value="Open Dialog" />
<input type="text" name="randVal" value="" readonly="readonly" />
Javascript
$(document).ready(function() {
$('input[name="dialogOpen"]').click(function(){
$("#dialog").dialog({
title: 'Additional Tenancy Information',
resizable: false,
width: 530,
show: { effect:'fade', duration:500 },
hide: { effect:'fade', duration:400},
modal: true,
close: function (event, ui) {
},
open: function (event, ui) {
var randval=Math.floor(Math.random()*3)+1
console.log(randval);
$('input[name="randVal"]').val(randval);
$('input[name="rentFrequency"]').removeAttr('checked');
$('input[name="rentFrequency"][value="'+randval+'"]').attr('checked', 'checked');
}
});
});
});
これは、ダイアログ ポップアップがないだけで実質的に同じコードであり、期待どおりに動作します。
RUNをクリックし続けるだけ