我有克隆這樣一種形式(commonStuff)(和HTML頁面,在jQuery Mobile的,那裏的形式出現多次設計,克隆):如何重命名克隆表單中的所有id(javascript)?
var commonClone = commonStuff.cloneNode(true);
這個功能
function renameNodes(node) {
var i;
if (node.length) {
for (i = 0; i < node.length; i += 1) {
renameNodes(node[i]);
}
} else {
// rename any form-related elements
if (typeof node.form !== 'undefined') {
node.id = currentPrefix + '_' + node.id;
node.name = currentPrefix + '_' + node.name;
// This assumes that form elements do not have child form elements!
} else if (node.children) {
renameNodes(node.children);
}
}
}
它向表單中的任何元素的id和名稱添加前綴'form1_','form_2'(currentPrefix),並將其應用於commonClone(並遞歸給他的兒子)。
renameNodes(commonClone);
它在文本輸入的情況下很好地工作等
<div data-role="fieldcontain" class="ui-field-contain ui-body ui-br">
<label for="foo" class="ui-input-text">Age:</label>
<input type="text" name="age" id="age" value="" class="ui-input-text ui-body-c ui-corner-all ui-shadow-inset">
</div>
但它在單選按鈕上故障等
<div data-role="fieldcontain">
<fieldset data-role="controlgroup" data-type="horizontal">
<legend>Address:</legend>
<input type="radio" name="radio-address" id="radio-address_female" value="1" checked="checked" />
<label for="radio-address_female">Address 1</label>
<input type="radio" name="radio-address" id="radio-address_male" value="2" />
<label for="radio-address_male">Address 2</label>
</fieldset>
</div>
施加重命名到外的div像「fieldcontain」和'控制組'。它的作品,如果我刪除這兩個div,但圖形效果是不可接受的...
至於現在,我得到的問題是在最後'如果'塊它不關心兄弟姐妹,但我真的不知道如何解決這個問題。任何想法?
編輯:此代碼來自這個答案How to create a tabbed html form with a common div
謝謝。這與我最終生成的代碼類似(請參閱我自己的答案)。我希望找到一種更優雅的方式來管理這件事情,使用克隆節點上的遞歸方法,而不是直接重命名頁面中的元素:) –
好的,回答編輯。 –
哇,這很有趣!謝謝! –