我正在下面创建一个对话框,以接收名称以发布内容。在第三行,我将输入字段初始化为使用的姓氏。问题是,如果我输入一个新值并单击“发布”,当“发布”功能读取字段的值时,它总是再次获得此预设值,而不是输入的新值。有没有人看到问题?感谢。
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");
}
},
});
答案 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容器的副本,并且此事件将所有输入的数据推回原始状态。