2015-01-17 147 views
0

我正在尝试编码this bug的解决方法我已经用gem nested_form。不需要Ruby/Rails知识,这都是关于JavaScript的。Javascript - 删除重复条目

所以简而言之,当我的页面重新加载时,我有一些具有相同模型ID(在隐藏输入的值属性中)的重复字段。

编辑:添加有值50的非重复的输入,即不应修改

<tbody class="echange fields> 
    ... 
    <input id="etude_echanges_attributes_0_id" type="hidden" name="etude[echanges_attributes][0][id]" value="42"> 
</tbody> 
<tbody class="echange fields> 
    ... 
    <input id="etude_echanges_attributes_1_id" type="hidden" name="etude[echanges_attributes][1][id]" value="42"> 
</tbody> 
<tbody class="echange fields> 
    ... 
    <input id="etude_echanges_attributes_2_id" type="hidden" name="etude[echanges_attributes][1][id]" value="50"> 
</tbody> 

的2个第一输入具有值42只有最后一个是很好的,所述第一个是重复。所以基本上我需要一个代码扫描所有的id=".*attributes_x_id"和他们的value,只保留最后一个。

所以在我上面给的例子时,JavaScript应该检测...

<input id="etude_echanges_attributes_0_id" ... value="42"> 
<input id="etude_echanges_attributes_1_id" ... value="42"> 

...有42相同的值,这意味着它们是重复

然后,它会删除除了最后一个。还有以下不应该被修改,因为它是唯一一个与模型ID值50

<input id="etude_echanges_attributes_2_id" ... value="50"> 

编辑:参数可以改变是

  • 模型的标识符:什么是_attributes
  • 一个HTML ID:在_attribute_xxx
  • 型号ID的XXX,其对应于input的值:value="yyy"

(注意42和50只是一个例子,真正的有MongoDB的标识,看起来像5470b5075374611500040000)

我想要做什么:

  1. 查找<input>对应的副本相同的实例模型(参见上面)
  2. 处理除最后一个操作外的所有操作:
  3. 提取echanges_echanges_attributes_
  4. singularize它,所以它成为echange
  5. 寻父通过其类“ECHANGE田”
  6. 从DOM

删除这个元素对于现在的一步,是我的一个问题是第n步°1。我不知道是否可以使用简单的jquery/css选择器来做到这一点?

回答

1

嗯,你可以在jQuery的做到这一点:

$('input[id^="etude_echanges_attributes"][value="42"]:not(:last)').remove(); 

我们匹配id,以确保我们得到正确的<input> s,而不是任何<input>。由于id有一个变量值,我们不能使用#。因此,我们使用属性选择器来匹配前缀值。还在选择器中投入value

+0

哦,对不起,让我举一个更好的例子。我们需要按照他们的价值和他们的ID的一部分来匹配重复项目,但不是仅仅是ID –

+0

@CyrilDD这仅仅是为“值”匹配添加的问题。 – Joseph

+0

是的,但事先并不知道价值将会是42 ....可以是任何数字。这是数据库中条目的ID。 这里的变量参数是: 什么是'_attribute'之前的属性'_attribute_xxx_',值'value =“yyy”' –