2011-09-01 48 views
2

我已经使用.load()将几个表单加载到不同的DIV中。加载的文件如下例所示。使用jQuery .submit()检索提交表单的ID和/或名称

<div id="block_id-299"> 
<div id="content"> 
<form name="form1 method="post"> 
<input type="submit" name="field1" value="Submit" /> 
</form> 
</div> 
</div> 

,现在我试图检索提交的表单的名字,后来,它的使用.serialize()值。 我正在使用$('form').submit(function(){ ... },但由于我动态加载表单,这不再工作。

任何帮助?

PS:事件可以使用$(document).submit(function(){捕获,但如何获取表单的名称和/或ID?

回答

8

你可以用$做()代表:

$(document).delegate('form', 'submit', function(event) { 
    var $form = $(this); 
    var id = $form.attr('id'); 
    var data = $form.serialize(); 
    // ... 
}); 

这个工程即使在添加表格你叫委托后()。

这可以通过侦听submit事件冒泡达到document,并通过测试是否源自form元素。

这与$('form').live('click', ...)类似,但最初并不执行选择器。

请参阅.delegate().live()文档。

+0

有没有办法让提交的按钮的名称和值呢? – pnm123

+0

试试'$(document).delegate('表单按钮,表单提交','点击',...' – arnaud576875

0

您可以使用jQuerylive事件处理程序,它也适用于动态创建的元素。 试试这个

$('form').live('submit', function(event) { 
    var $form = $(this); 
    var formName = $form.attr('name'); 
    var formData = $form.serialize(); 
    // ... 
}); 
+0

感谢您的回答,但这是导致错误。 – pnm123

0

下面的代码将提醒其“create_btn” CSS按钮的形式ID,您也可以通过ID,如果你想改变(.create-BTN)访问点哈希(# create-btn),您可以使用.click或.submit来代替。

<script type="text/javascript"> 
    $(document).ready(function() { 

    $('.create-btn').click(function(){ 
     alert(this.form.id); 

     }) ; 

    }); 
1

要在提交表单时获取表单属性,我们也可以使用submit函数。例如:

$("form").submit(function(){ 
    var form = $(this); 
    var id = form.attr('id'); 
    alert(id + ' form submitted'); 
});