2015-09-07 40 views
0

我有一个允许动态生成内容的网页,我希望在隐藏元素创建时/在发布之前将所有动态内容名称加上前缀将是可以接受的。使用jQuery将元素名称指定为多个元素的名称作为前缀

这些动态添加的文本框所在的类在页面间共享,因此无法轻松用于识别。

我不能得到这个工作,我需要检查自己是否有前缀的,如果他们不这样做,加上前缀

小提琴:

https://jsfiddle.net/ycjrunja/2/

的jQuery

$(// can't use class).attr(); // do I need to use this method for each <td> ? 

电流产生的标记:

<input type=hidden name="main[xyz]" /> 
      <input type=button name="addRow" /> 
     <table> 
     <tr> 
      <td><input type=text name="tb1r1" /></td> 
      <td><input type=text name="tb2r1" /></td> 
     </tr>  
     <tr> 
      <td><input type=text name="tb1r2" /></td> 
      <td><input type=text name="tb2r2" /></td> 
     </tr> 
     </table> 

理想生成的标记

<input type=hidden name="main[xyz]" /> 
     <input type=button name="addRow" /> 
    <table> 
    <tr> 
     <td><input type=text name="main[xyz]tb1r1" /></td> 
     <td><input type=text name="main[xyz]tb2r1" /></td> 
    </tr>  
    <tr> 
     <td><input type=text name="main[xyz]tb1r2" /></td> 
     <td><input type=text name="main[xyz]tb2r2" /></td> 
    </tr> 
    </table> 
+0

不确定你想要通过对所有输入具有相同的名称来实现。 :) – AdityaParab

+0

@Maverick不知道你的意思,从我看到的,所有的名字都不一样。 –

+0

@Maverick道歉不清楚,这只是一个大型ASP项目的一个呈现的html示例,我试图让所有输入的前缀都相同,以便当我保存回模型时,他们知道列表项属于:) – SelrekJohn

回答

1

使用此:

$("td input").each(function(){ 
$(this).attr("name",$("input:hidden").attr("name")+$(this).attr("name")); 
}); 

说明:

第一行通过内部所有<td>元素<input>元素iteratres。

第二行concantates的<input type = "hidden>"name<input>元件的name正被迭代并将其分配给当前迭代元件的name

最后一行结束功能和each()方法。

在执行此脚本之前,<input>元素必须有一个名称。 <script>标记必须放在关闭主体标记之前,或者使用window.onload来代替,以确认DOM已加载。

+0

明白了,真棒谢谢! – SelrekJohn

+0

@SelrekJohn你热情地欢迎!!!! – Arjun

1

试试这个。

$("td input").each(function(){ 
    $(this).attr("name",$("input:hidden").attr("name")+$(this).attr("name")) 
}); 
+0

jQuery不太热,你能解释一下这是干什么吗?看着它,会不会把它作为后缀? – SelrekJohn

+0

我们得到了TD中所有INPUT的列表,并为它们设置了新的名称属性 –

+0

啊是的,看到我的错误,谢谢你会告诉我,当我得到它的工作标记正确。:) – SelrekJohn