jQuery对话框输入无效

时间:2014-02-11 12:59:07

标签: jquery jquery-dialog

我正在下面创建一个对话框,以接收名称以发布内容。在第三行,我将输入字段初始化为使用的姓氏。问题是,如果我输入一个新值并单击“发布”,当“发布”功能读取字段的值时,它总是再次获得此预设值,而不是输入的新值。有没有人看到问题?感谢。

DEMO

publish_dialog$ = $('<div></div>').appendTo('body')
    .html("<div><h6>Publish as . . .</h6><input id='publish_name' type='text'></div>");
$('input#publish_name').val(g.last_publish_name);
publish_dialog$.dialog({
    modal: true, title: 'Publish as . . .', zIndex: 10000, autoOpen: true,
    width: 'auto', resizable: false,
    buttons: {
        Publish: function () {
            g.last_publish_name = $("#publish_name").val();  // get value entered
            publishPage(g.last_publish_name);
            $(this).dialog("close");
        },
        Cancel: function() {
            $(this).dialog("close");
        }
    },
});

2 个答案:

答案 0 :(得分:2)

jQuery对话框很疯狂。他们基本上将你的html复制到另一个容器并将其附加到正文。因此,如果您对输入元素使用id,则可能会出现非常不可预测的行为。在.net世界中,我不得不与它共舞。但是如果你不需要你的元素(你几乎总是不要),请尝试改变你对类输入的访问方式。然后查看您的DOM并查看它放置克隆字段的容器,并在那里访问它们。请查看此答案以获取更多信息:jQuery UI Dialog behaves unpredictably

答案 1 :(得分:0)

我知道它已经老了,但我陷入同样的​​问题并找到了另一种解决方法。只需将onkeypress事件附加到输入字段,如下所示:

<input type="text" id="cancel_descr" value="" onkeypress="document.getElementById('cancel_descr').value=this.value"/>

看起来很奇怪,但这对我有用 - jQuery创建div容器的副本,并且此事件将所有输入的数据推回原始状态。