【问题标题】:store value (ID) for dynamically created dialogs为动态创建的对话框存储值 (ID)
【发布时间】:2016-01-23 09:23:30
【问题描述】:

我在将值存储在能够打开对话框的动态创建按钮中遇到问题。

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

$('<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 (button:id),但所有按钮的 id 输出都是 3。
我的应用程序将动态创建对象,我想通过此对话框修改这些对象。 “ID”值将用作指向我的数据库的“指针”。所以当我点击第一个创建的按钮时,不管我创建了多少个按钮,它仍然必须有一个“ID”值 == 1
FIDDLE 来模拟我的情况。
感谢大家的时间和意见。

【问题讨论】:

  • 似乎过于复杂,但不确定您究竟想做什么来创建多个相同的对话框。为什么不使用一个对话框?
  • @charlietfl 因为我的应用程序将动态创建对象,我想通过此对话框修改这些对象。 “ID”值将用作指向我的数据库的“指针”。所以当我点击第一个创建的按钮时,不管我创建了多少个按钮,它仍然必须有一个“ID”值 == 1

标签: javascript jquery html jquery-ui-dialog


【解决方案1】:

ID 应该是唯一的,但您的函数正在生成具有相同 ID 的克隆按钮。

btn1.id = "change_coord";

要么做一些事情使它们独一无二,要么使用类。


问题 #2

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

【讨论】:

  • ID 在这里肯定是个问题,但我不确定是否还有更多问题。您介意在您的问题中显示您是如何读取 ID 的吗?
  • 可能是ID有点误解,我的意思是ID喜欢给我的按钮分配一个特殊的值。此 ID 将用作指向我的数据库的“指针”,我想在其中存储对话框输入。在应用程序中,我将动态生成对象,每个对象都有这个带有唯一“指针”的按钮。
  • 是的,对不起,我误解了。我刚刚用工作小提琴更新了我的答案。但是,请同时修复我首先提到的 HTML ID 问题,因为这是一种正确的做法,并且可能会在您最不期望的时候给您带来麻烦。
  • 我真的很抱歉,但是当我生成 2 个 btns 并像这样使用它们时:btn1、btn2 和 btn1 它将输出数字:1、2、3。但我的目标是输出: 1、2、1。你知道我的意思吗?
  • 或将生成器值添加到数据属性中
猜你喜欢
  • 2012-06-24
  • 1970-01-01
  • 1970-01-01
  • 2020-02-21
  • 1970-01-01
  • 2010-12-04
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
相关资源
最近更新 更多