Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 复杂表单-如何为每个新元素生成新的对象ID?_Javascript_Jquery_Ruby On Rails_Ruby On Rails 3_Nested Forms - Fatal编程技术网

Javascript 复杂表单-如何为每个新元素生成新的对象ID?

Javascript 复杂表单-如何为每个新元素生成新的对象ID?,javascript,jquery,ruby-on-rails,ruby-on-rails-3,nested-forms,Javascript,Jquery,Ruby On Rails,Ruby On Rails 3,Nested Forms,通过结合逻辑和缺乏JQuery/Javascript经验,我发现自己遇到了这个问题 背景- 我使用的是复杂表单示例的集合,它支持一个表单同时为多个嵌套表创建/编辑记录。部分原因是用户能够动态添加/删除新记录。示例:用户可以创建一个项目级别a,其中包含多个任务级别B,每个任务都包含多个任务级别C Javascript添加- 我构建了一个javascript函数,它独立地应用于每个任务。当用户从选择框中选择时,true的id为:multiple_choice_uu+f.object_id.to_s,

通过结合逻辑和缺乏JQuery/Javascript经验,我发现自己遇到了这个问题

背景- 我使用的是复杂表单示例的集合,它支持一个表单同时为多个嵌套表创建/编辑记录。部分原因是用户能够动态添加/删除新记录。示例:用户可以创建一个项目级别a,其中包含多个任务级别B,每个任务都包含多个任务级别C

Javascript添加- 我构建了一个javascript函数,它独立地应用于每个任务。当用户从选择框中选择时,true的id为:multiple_choice_uu+f.object_id.to_s,函数会找到它并高亮显示一个名为true_u+f.object_id.to_s的div

新元素没有新的对象id- 每次用户添加新记录时,他们都有相同的对象id,这使得我的上述计划毫无用处。我尝试将此对象_id添加到RAND100000000,但即使每次添加一个新任务时,这也是相同的

我如何在每次添加任务时1生成新的对象ID/随机数,或者2如何为每个任务使用不同的唯一标识符(每次添加都不同)

在application.js中添加_子代码:

$(function() {
  $('form a.add_child').live('click', function() {
    var assoc   = $(this).attr('data-association');
    var content = $('#' + assoc + '_fields_template').html();
    var regexp  = new RegExp('new_' + assoc, 'g');
    var new_id  = new Date().getTime();
    $(this).parent().before(content.replace(regexp, new_id));
    return false;
  });
});
澄清
问题不在于如何在上面的.js代码中生成随机数。问题是如何从新生成的代码中访问新的随机数,例如,形成html元素的ID。

只需使用全局计数器:

var _taskCount = 0;
$(function() {
  $('form a.add_child').live('click', function() {
    ...
    var new_id  = "Task_" + _taskCount;
    _taskCount++;
    ...
  });
});

我知道这将为新的id创建一个不同的值,但我遇到的问题是如何给新可见的html元素这个新值。即使在我上面的代码中,它也会生成不同的新ID-如何使用Ruby或其他工具访问此变量?@sscirrus不熟悉Ruby,抱歉。。也许这个例子会有所帮助:$this.parent.append'hello I'm Div'+new_id+;这将在每次单击add_child链接时使用新ID附加新的DIV元素。也许这是一个重新开始的问题,但您不能简单地为:child_索引生成一些内容,如Time.now.usec吗?或者您是否一直将空任务模板保存在客户端?上面的代码位于application.js中,并且每次运行时都会创建一个唯一的新任务id。但是,我如何从视图内部访问此唯一编号?