我正嘗試創建上傳表單。到目前爲止它運行良好,我正在嘗試解決一些我不喜歡的錯誤。克隆表單輸入和清除值
行,我似乎有麻煩是
$(element).find(">:first-child").attr("value", "");
當克隆形式,它克隆div和替換沒有留下一個空白表單的價值,這個效果很好,如果我刪除該行我會得到以前的窗體的值,所以它會很好的空白窗體顯示。
我遇到的問題是當你刪除一個窗體的所有窗體的值刪除,我想要的是當你刪除一個窗體時,爲其他窗體保留單獨的值。
這裏有一個小提琴http://jsfiddle.net/d77pd/1/或見下文
HTML代碼
<button class="clone">Add an Image</button>
<div id="upload_image_sets">
<div id="clonedInput1" class="clonedInput">
<input type="text" id="upload_image_link_1" class="image" size="36" name="hero_options[upload_image_link_1]" value="' . $hero_options['upload_image_link_1'] . '" />
<input id="show_upload_image_link_button_1" class="button upload_images" type="button" value="Upload Image" />
<button class="remove">Remove</button>
</div>
</div>
的JavaScript
function updateClonedInput(index, element) {
$(element).appendTo("#upload_image_sets").attr("id", "clonedInput" + index);
$(element).find(">:first-child").attr("id", "cs_product_menu_img_src_" + index);
$(element).find(">:first-child").attr("name", "hero_options[upload_image_link_" + index + "]");
$(element).find(">:first-child").attr("value", "");
$(element).find(">:first-child").next().attr("id", "cs_product_menu_img_src_" + index + "_button");
displayRemove();
}
function displayRemove() {
if ($('.clonedInput').length === 1) {
$('.remove').hide();
} else {
$('.remove').show();
}
}
displayRemove();
$(document).on("click", ".clone", function (e) {
e.preventDefault();
var cloneIndex = $(".clonedInput").length + 1;
var new_Input = $(this).closest('.clonedInput').length ? $(this).closest('.clonedInput').clone() : $(".clonedInput:last").clone();
updateClonedInput(cloneIndex, new_Input);
});
$(document).on("click", ".remove", function (e) {
e.preventDefault();
$(this).parents(".clonedInput").remove();
$(".clonedInput").each(function (cloneIndex, clonedElement) {
updateClonedInput(cloneIndex + 1, clonedElement);
})
});
克隆形式幾次,如果你刪除任何形式的分開形式第一個與內容,你會注意到第一個表格的內容nt刪除,我想這個留下。
借來是否有遞增具體要求'id'屬性上的每個克隆?我只問,因爲克隆,附加和清除值可以用很少的代碼來執行。 – andyb