1

我有一个问题,我想记住 jQuery UI 对话框弹出窗口中选中的单选按钮。

我遇到了一些奇怪的行为,所以我在 JSFiddle 中对其进行了模拟。小提琴在创建时基本上随机选择 3 个收音机选项之一。然而,它很快就会停止工作。

我也尝试过使用和不使用 removeAttr('checked') 的行。

您将需要单击打开对话框并关闭它几次才能看到它停止工作。我一直在最新版本的 Chrome 中对此进行测试。

http://jsfiddle.net/t8kN7/5/

HTML

<div id="dialog" style="display:none;">

<input type="radio" class="left" name="rentFrequency" value="1" />
<span class="left">&#160;Monthly&#160;&#160;&#160;</span>

<input type="radio" class="left" name="rentFrequency" value="2" />
<span class="left">&#160;Quarterly&#160;&#160;&#160;</span>

<input type="radio" class="left" name="rentFrequency" value="3" />
<span class="left">&#160;Annualy&#160;&#160;&#160;</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');
        }
    });
});
});

这实际上是相同的代码,只是没有弹出对话框,它的行为符合预期:

http://jsfiddle.net/W6rFh/1/

一直点击 RUN

4

2 回答 2

4

跟进我的评论。将 attr 实例更改为 prop

$('input[name="randVal"]').val(randval);
$('input[name="rentFrequency"]').prop("checked", false);
$('input[name="rentFrequency"][value="'+randval+'"]').prop("checked", true);
于 2013-03-11T15:37:08.970 回答
1

您应该只创建一次对话框。

在这种情况下,我建议您立即创建对话框,但将autoOpen属性设置为false.

在点击处理程序中,您可以调用:

$('#dialog').dialog('open');

此时它将具有与您关闭它时相同的状态。

显然,您还应该删除代码以在open:处理程序中设置随机状态。

于 2013-03-11T15:22:03.290 回答