使用javascript/jquery动态地从web表单中添加(和删除)一组文本元素
Add (and remove) group of textelements dynamically from a web form using javascript/jquery
我对javascript非常陌生(我是PHP开发人员),所以我真的很困惑,试图让这个工作
在我的web表单我有3个文本字段(名称,描述和年份),我需要让用户添加尽可能多的他需要,点击一个web链接,也,任何新的文本字段组需要有一个新的链接在一边删除它(删除我)。
我尝试了一些教程和一些类似的问题在stackoverflow,但我不得到它很好。如果你能告诉我一个代码的例子,只是这个函数,我可以理解的原则。谢谢你的帮助!
这是我想到的最简单的事情,你可以用它作为起点:
HTML<div class='container'>
Name<input type='text' name='name[]'>
Year<input type='text' name='year[]'>
Description<input type='text' name='description[]'>
</div>
<button id='add'>Add</button>
<button id='remove'>Remove</button>
jQuery function checkRemove() {
if ($('div.container').length == 1) {
$('#remove').hide();
} else {
$('#remove').show();
}
};
$(document).ready(function() {
checkRemove()
$('#add').click(function() {
$('div.container:last').after($('div.container:first').clone());
checkRemove();
});
$('#remove').click(function() {
$('div.container:last').remove();
checkRemove();
});
});
here提琴:http://jsfiddle.net/Fc3ET/
这样你就利用了PHP可以发布数组的特性:服务器端你只需要迭代$_POST['name']来访问各种提交
编辑-下面的代码是一个不同的转折:你有一个删除按钮为每个组:
$(document).ready(function() {
var removeButton = "<button id='remove'>Remove</button>";
$('#add').click(function() {
$('div.container:last').after($('div.container:first').clone());
$('div.container:last').append(removeButton);
});
$('#remove').live('click', function() {
$(this).closest('div.container').remove();
});
});
操纵http://jsfiddle.net/Fc3ET/2/jsFidde 使用添加和生活
String.format = function() {
var s = arguments[0];
for (var i = 0; i < arguments.length - 1; i++) {
var reg = new RegExp("''{" + i + "''}", "gm");
s = s.replace(reg, arguments[i + 1]);
}
return s;
}
var html = "<div>" + '<input name="name{0}" type="text" />' + '<input name="description{1}" type="text" />' + '<input name="year{2}" type="text" />' + '<input type="button" value="remove" class="remove" />' + '</div>',
index = 0;
$(document).ready(function() {
$('.adder').click(function() {
addElements();
})
addElements();
$('.remove').live('click', function() {
$(this).parent().remove();
})
});
function addElements() {
$('#content').append(String.format(html, index, index, index));
index = index + 1;
}
看看这个:http://jsfiddle.net/MkCtV/8/(更新)
但是,唯一要记住的是,所有克隆的表单字段都将具有相同的名称。但是,您可以将它们拆分并在服务器端遍历它们。 JavaScript:<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$("#addnew").click(function(e) {
$("#firstrow").clone() // copy the #firstrow
.removeAttr("id") // remove the duplicate ID
.append('<a class="remover" href="#">Remove</a>') // add a "remove" link
.insertAfter("#firstrow"); // add to the form
e.preventDefault();
});
$(".remover").live("click",function(e) {
// .live() acts on .removers that aren't created yet
$(this).parent().remove(); // remove the parent div
e.preventDefault();
});
});
</script>
HTML: 添加新行<form id="myform">
<div id="firstrow">
Name: <input type="text" name="name[]" size="5">
Year: <input type="text" name="year[]" size="4">
Description: <input type="text" name="desc[]" size="6">
</div>
<div>
<input type="submit">
</div>
</form>
尝试将它们包含在div
元素中,然后您可以删除整个div
。
试试这个
标记
<div class="inputFields">
..All the input fields here
</div>
<a href="javascript:void(0);" id="add">Add</a>
<div class="additionalFields">
</div>
JS
$("#add").click(function(){
var $clone = $(".inputFields").clone(true);
$clone.append($("<span>Remove</span").click(functio(){
$(this).closest(".inputFields").remove();
}));
$(".additionalFields").append($clone);
});
你可以考虑以下两个插件:
- jQuery转发器
- jquery.repeatable
这个问题几乎是4年前发布的。我只是提供信息,以防有人需要它。
相关文章:
- 从组件状态的数组中删除元素
- 从数组中删除元素的最佳方法是:javascript/jquery
- 正则表达式条件来删除元素
- 使用javascript删除元素时出现的问题
- 当会话存储阵列中存在大量元素时,如何从中删除元素
- 从角度数组中删除元素
- AngularJs localStorage在循环中删除元素
- 在使用jquery插入之前删除元素
- 如何删除元素列表中的类并添加到另一个元素 Jquery.
- 更新分组条形图(转换或删除元素组)
- 向下滚动后如何用同一类逐个删除元素
- 如何防止 jQuery 事件在删除元素时冒泡
- 从jQuery对象中删除元素
- 如何删除元素的结束标记,添加一些文本,然后重新添加标记
- 从画布中删除元素
- 如何解析html以删除元素并只返回其位置的标题
- 使用 V8 从密集数组中删除元素的最佳方法是什么
- 如何使用jquery删除元素
- 根据成员属性从数组中删除元素
- 从中删除元素'的父元素,并将其附加到其他元素