存储值(ID)用于动态创建的对话框

时间:2016-01-23 00:56:56

标签: javascript jquery html html5 jquery-ui-dialog

我有一个问题是在动态创建的按钮中存储值,这些按钮可以打开对话框。

所有按钮的对话框都是相同的,所以我有这样的定义:

$('<div id="dialog-form" title="Change coordinates">' +
      '<p class="validateTips">Both fields are required.</p>' +
      '<form>' +
       '<fieldset>' +
        '<label for="lon">Longitude (decimal)</label>' +
        '<input type="text" name="lon" id="lon" value="" class="text ui-widget-content ui-corner-all">' +
        '<label for="lat">Latitude (decimal)</label>' +
        '<input type="text" name="lat" id="lat" value="" class="text ui-widget-content ui-corner-all">' +
        '<input type="submit" tabindex="-1" style="position:absolute; top:-1000px">' +
      '</fieldset>' +
    '</form>' +
    '</div>').appendTo(document.body);

然后我生成带有特殊“创建”按钮的对话框按钮:

$( "#create" ).button().on( "click", function()
    {
            var btn1 = document.createElement("BUTTON");
            btn1.id = "change_coord";
            var t1 = document.createTextNode("Change coordinates");
            btn1.appendChild(t1);
            document.body.appendChild(btn1);
            generator++;
    });

然后我有一个对话框声明和函数来处理我的对话框输入,在此之后,我正在尝试打印输入和我的id(来自生成器的值)。输入很酷,但ID不起作用 例如,我生成3个按钮,如btn1:1,btn2:2,btn3:3(按钮:id),但所有按钮的id输出为3。 我的应用程序将动态创建对象,我想通过此对话框修改此对象。并且“ID”值将用作我的数据库的“指针”。因此,当我点击第一个创建的按钮时,无论我创建了多少个按钮,它仍然必须具有“ID”值== 1
FIDDLE模拟我的情况。
谢谢大家的时间和意见。

1 个答案:

答案 0 :(得分:0)

ID是唯一的,但您的功能是生成具有相同ID的克隆按钮。

btn1.id = "change_coord";

要么做些什么来使它们成为独特的,要么使用类。

问题#2

您正在使用var generator生成ID(不再讨论HTML ID,如上所述)。然后,当您调用addUser时,尝试访问生成器值,期望您从创建对话框时获得generator值。它没有那样工作,你总是得到generator当前值。为了解决这个问题,你需要在addUser函数内增加生成器,而不是在创建那些对话框弹出按钮时。见这里:https://jsfiddle.net/7rr85xuw/2/