2015-09-07 66 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