2012-09-30 50 views
0

我跟着一个关于创建嵌套属性表格episode的railscasts。所以当我的表单上按下add mission按钮时,我有一段coffeescript会创建一个user_mission对象。自动完成一个动态栏杆

jQuery -> 
    $('form').on 'click', '.add_fields', (event) -> 
    time = new Date().getTime() 
    regexp = new RegExp($(this).data('id'), 'g') 
    $(this).before($(this).data('fields').replace(regexp, time)) 
    event.preventDefault() 

的HTML的一部分产生如下所示:

<input id="user_user_missions_attributes_70324621482200_mission_title" name="user[user_missions_attributes][70324621482200][mission_title]" size="30" type="text" /> 

我尝试添加到自动填充功能,看起来到已创建任务的列表,能够看到,如果用户输入使命已经存在。问题是我有点新的HTML,我不知道如何添加一个自动完成调用动态HTML ID。

有没有一种干净的方式来找到我需要添加自动完成的字段?我是否需要标记以搜索user_user_missions_attributes_70324621482200_mission_title

谢谢

回答

0

尝试通过name属性的部分匹配来定位它。它不会那么快,但是如果您每页只有几个,您将不会注意到页面加载性能下降。

$("input[name*='[mission_title]']") 

你也可以部分匹配的ID,但它似乎并不干净:

$("input[id*='_mission_title']") 

你也可以添加一个类的领域,只是使用它。

+0

我喜欢使用类的想法。我查了一下如何使用它,并在任务栏静态显示在页面上的时候使用它,但不是当上面的jQuery通过'add mission button'动态添加字段时。 – GTDev

+0

一旦你添加了一个字段,你将需要创建一个新的jQuery对象,因为jQuery对象被缓存了,并且不会自动拾取新的DOM元素。 – bricker