使用jQuery UI对话框获取的输入文本数据在第二个对话框打开后不更新其值

时间:2012-06-13 14:43:35

标签: jquery jquery-ui jquery-ui-dialog

我宣布了一个按钮:

<button id="create" type="button">add div</button>

我希望每次使用jQuery UI对话框单击按钮时向文档正文添加一个新的div元素,如下所示:

var form = $("<div>", {id:"form"});

    form.append(
        $("<input>")
            .attr({
                "type" : "text",
                "id" : "user-input"
            })
    )
    .dialog({
        width: 600,
        buttons: {
            "Ok": function() {
                var new_div = $("<div>").html($("#user-input").val()).addClass("destiny_div");
                new_div.appendTo($("body"));
                $(this).dialog("close");
            }}
    });

我第一次点击按钮它工作正常,但第二次,我写入输入文本框的文本没有使用新值更新,而是采用第一个放置的值。

例如,如果我第一次输入“hello”并单击“ok”按钮,则会在主体中添加一个新的div,其中包含文本“hello”,但是当我第二次执行时,现在键入“再见”,将添加一个新的div,但文本中包含“hello”,而不是“goodbye”。

以下是我的代码:http://jsfiddle.net/vWQ9T/

关于它为何如此运作的任何想法? 感谢

1 个答案:

答案 0 :(得分:5)

每次插入div时都会附加对话框。因此,第二次按下按钮时,它仍然会从第一个对话框中取出第一个#user-input。因此,您必须在关闭对话框后使用close-Parameter:

删除表单
close: function () {
    form.remove()
}

查看更新jsfiddle:http://jsfiddle.net/vWQ9T/1/