jQuery动态添加表单
jQuery attaching a form dynamically
我试图在用户单击链接时将表单附加到div。我已经编写了完成任务的示例代码,但是,我想知道如何防止该函数对表单进行多次迭代。
下面是我的代码:<script language="javascript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script language="javascript" type="text/javascript">
function moveForm(element) {
$("#"+element).append('<div id="oneForm"> <form name="myForm" id="myForm" method="post" action=""><input type="text" id="'+element+'"> <input type="button" name="myButton" value="Test" /></form></div>');
}
</script>
<div style="border-color:black; border-style:dashed;">
<div id="myItem_1">
Item #1 <a href="javascript:moveForm('myItem_1')">View Form</a>
</div>
<div id="myItem_2">
Item #2 <a href="javascript:moveForm('myItem_2')">View Form</a>
</div>
<div id="myItem_3">
Item #3 <a href="javascript:moveForm('myItem_3')">View Form</a>
</div>
</div>
正如您所看到的,上面的代码可以工作,但是当您单击任何"View Form"链接时,表单会出现无限次,并且也会出现在每个元素中。我希望表单只出现一次,无论点击哪个"查看表单"链接。我还希望表单显示在正确的元素下,例如:
如果我点击item# 1的"查看表单",表单应该出现在"item# 1"下面。
如果我接着点击item# 3的"查看表单",表单应该出现在"item# 3"的下面,而在"item# 1"的下面应该消失。
我想我的方向是对的,但是我需要一些帮助。
提前感谢。
删除内联事件处理程序(它们是不好的做法,你真的不需要它们,特别是当你使用jQuery时),并给你的链接一个类:
<a href="#" class="formLink">
然后使用以下jQuery:
$(".formLink").one("click", function() {
$("#oneForm").remove();
$(this).after('<div id="oneForm"> <form name="myForm" id="myForm" method="post" action=""><input type="text" id="'+ $(this).parent().attr("id") +'"> <input type="button" name="myButton" value="Test" /></form></div>');
});
这将一个click事件处理程序附加到所有类为"formLink"的元素,这将只运行一次(这是one
方法的要点)。在事件处理程序中,您可以使用after
方法在单击的元素之后插入您的内容,并使用remove
方法删除先前添加的(如果有的话)元素。
下面是一个工作示例。
我不能100%确定上面的内容是否完全符合你的要求(如果你点击一个链接,然后另一个,你不能再点击第一个链接)。如果您希望能够做到这一点,请使用以下方法(普通的旧click
事件处理程序,而不是one
方法):
$(".formLink").click(function() {
$("#oneForm").remove();
$(this).after('<div id="oneForm"> <form name="myForm" id="myForm" method="post" action=""><input type="text" id="'+ $(this).parent().attr("id") +'"> <input type="button" name="myButton" value="Test" /></form></div>');
});
这个版本还有一个例子
先删除:
function moveForm(element) {
$('#oneForm').remove()
$("#"+element).append('<div id="oneForm"> <form name="myForm" id="myForm" method="post" action=""><input type="text" id="'+element+'"> <input type="button" name="myButton" value="Test" /></form></div>');
}
每次删除oneForm
:
这是它的jsFiddle
<script language="javascript" type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script language="javascript" type="text/javascript">
function moveForm(element) {
$('#oneForm').remove();
$("#"+element).append('<div id="oneForm"> <form name="myForm" id="myForm" method="post" action=""><input type="text" id="'+element+'"> <input type="button" name="myButton" value="Test" /></form></div>');
}
</script>
<div style="border-color:black; border-style:dashed;">
<div id="myItem_1">
Item #1 <a href="javascript:moveForm('myItem_1')">View Form</a>
</div>
<div id="myItem_2">
Item #2 <a href="javascript:moveForm('myItem_2')">View Form</a>
</div>
<div id="myItem_3">
Item #3 <a href="javascript:moveForm('myItem_3')">View Form</a>
</div>
</div>
相关文章:
- jQuery表单添加不适用于下拉列表
- 如何在javascript转换编码中将一个动态值从一个表单添加到另一个页面
- 根据下拉选择向表单添加和删除输入标记
- 向表单添加滚动功能
- 如何根据用户输入的数字动态地向表单添加文本字段
- 在firefox中,在向表单添加onsubmit属性后,不会提交表单
- 在rails中选择向表单添加文本字段的最佳方式
- 使用 HTML 按钮向输入和提交表单添加文本
- 如何在 PHP 中向此联系表单添加验证
- 使用 Ajax 和 PHP 在外部 XML 文件中从 HTML 表单添加新数据
- 按钮从外部表单添加选定=“选定”
- 使用 Javascript 将详细的输入表单添加到测验结果中
- jQuery 移动表单:添加的字段没有样式
- 向动态表单添加验证
- 在Meteor TODO应用程序中向表单添加另一个字段
- 我可以通过Javascript向表单添加参数吗
- 向表单添加多个字段
- 如何在Javascript中向表单添加隐藏的ID列表
- 向PHP表单添加更多字段(用户可以添加多个地址)
- 向表单添加动态字段