我有一堆动态创建并添加到div的表单。每个表单的id也是动态创建的 - ids总是不同的,但它们都以......开头。
updateFRM_
我无法使preventDefault()工作 - 我不确定是否存在问题,或者语法是否错误以至于js失败并重新加载。
为动态生成和动态命名的表单设置侦听器的正确语法是什么?
$( "#updater" ).on( "submit", "form[id^='updateFRM_']", function(e)
{
e.preventDefault();
感谢您的时间和帮助
答案 0 :(得分:6)
使用$(document)
选择器,您可以定位动态生成的元素。这是因为该文档涵盖了dom,而不仅仅是最初加载的html。以下是您可以做的两个例子。这完全取决于您的代码以及您将使用这两种选择中的哪一种。
var formid = 'someformid';
$(document).on('submit', '#' + formid, function(e) {
e.preventDefault();
// Do your form stuff
return false;
});
$(document).on('submit', '.my-form', function(e) {
e.preventDefault();
var formid = $(this).attr('id');
// Do stuff with the formid
return false;
});
return false;
不是必需的。我添加它以防e.preventDefault()
失败。一些jQuery版本有不同的方法来阻止默认操作。使用return false;
做同样的事情。它执行上面的代码然后,而不是默认操作返回false
。
答案 1 :(得分:1)
试试这个
$(function(){
$("form[id^='updateFRM_']").on("submit", function(e){
e.preventDefault();
});
});
答案 2 :(得分:1)
您应该为表单分配一个类,例如.prevent-default
并以这种方式操作它们。处理动态生成的ID是一个巨大的麻烦,特别是对于CSS选择器。