如果要将表单添加到其他表单中,则这是无效的。浏览器将尝试更正代码(根据浏览器的不同,使用不同的方法),一种方法是删除表单标记。
如果要在单击按钮时执行某些操作,则必须设置
onclick
事件。如果希望按钮提交表单,则应使用
type="submit"
相反。
更新:
你真的吗?
真正地
确定在试图添加表单的元素周围没有表单吗?通过在添加表单的元素周围放置一个表单,我可以轻松地复制准确的行为。如果外部窗体不在那里,则添加的窗体很好,并且在查看选择源时显示出来。
这个
parent
方法只执行一个级别,因此parentDiv变量是一个jquery对象,其中零元素是表单中按钮的父元素。你会想用
parents
或
closest
方法来查找元素。
工作示例:
<html>
<head>
<title></title>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<script type="text/javascript" src="jquery-1.4.1.js"></script>
<script type="text/javascript">
$(function(){
var id = 'asdf';
$('.copyFoodInstance').html("<form action='/Tracker/CopyFood' method='post'><input type='hidden' name='Id' value=" + id + "><input class='very-small-input' type='text' name='Quantity' value='1' /> for <select name='Date'><option value='Today'>Today</option><option value='Yesterday'>Yesterday</option></select><select name='Meal'><option value='Breakfast'>Breakfast</option><option value='Lunch'>Lunch</option><option value='Dinner'>Dinner</option><option value='Evening Snack'>Evening Snack</option></select><input type='button' class='submitCopyFood' value='Add'> or <div style='display:inline' class='CancelCopy'>Cancel</div></form> ");
$('.submitCopyFood').live('click', function() {
var parentDiv = $(this).closest('.copyFoodInstance');
var myForm = parentDiv.children('form');
alert(parentDiv.length); // shows 1
alert(myForm.length); // shows 1
});
});
</script>
</head>
<body>
<div class="copyFoodInstance"></div>
</body>
</html>