更改id后由JQuery触发的Javascript表单

时间:2013-06-28 17:53:24

标签: javascript jquery forms

我有一个表单,一旦提交,就会使用$('#search_form').submit(function(){# execute code here});执行一些JQuery。稍后在代码中,我使用$('#search_form').attr('id', 'tags_form');更改表单的ID。然后,当触发该表单时,我有一个不同的代码块。问题是,当我使用新ID提交表单时,它仍会触发旧的.submit()

2 个答案:

答案 0 :(得分:3)

更改元素的id不会从中删除现有处理程序。首先取消绑定:

$('#search_form').unbind('submit');

答案 1 :(得分:1)

当然是的,因为当您在启动时使用新的ID tags_form绑定事件时,它不仅存在。所以事件绑定在那里没有效果。

而是尝试使用事件委托或在更改id后绑定事件,或者为元素指定类名并将事件绑定到类名而不是id。

$(document).on('submit', '#tags_form, #search_form', function(){# execute code here});

或者:

$('.myFormClass').submit(processForm); //where the classname on form is myFormClass

或者:

说你的事件是这样的:

$('#search_form').on('click', processForm); // or $('#search_form').click(processForm);

随后:

// some code...
$('#search_form').off('submit'); // unbind the handler  or  $('#search_form').unbind('click');
//In the Code block that changes the id
$('#tags_form').on('submit', processForm); // bind the handler to new element