用javascript创建的HTML表单不会响应.submit
HTML Form created in javascript does not respond to .submit
我使用 javascript 动态地向我的 html 页面添加了一个表单。当我这样做时,表单上的 .submit 不起作用。但是,如果我在 html 中创建完全相同的表单,它会按预期工作。
这是一个小提琴:http://jsfiddle.net/dwha77g4/4/
以下代码:
$('.submit-form').submit(function(e){
alert("test");
e.preventDefault();
});
在小提琴中的第一个按钮上运行,但不在第二个动态创建的按钮上运行。
试试...工作演示
$("body").on('submit', '.submit-form', function(e) {
alert("test");
e.preventDefault();
});
基本上,动态创建的内容不能很好地处理先前的附加事件。 由于您尝试运行提交时该对象不存在,因此没有要附加到的内容。 我在这里所做的是将一个on事件附加到搜索.submit-form
的主体上,无论它是什么时候创建的。
代码的问题在于,当您将 listerner 添加到提交事件时,没有与查询 '.submit-form' 匹配的元素,因为您的 dinamic 表单尚未创建。
你可以做
$(document).ready(function() {
var formHTML = "<li><form action='#' method='POST' class='submit-form'><input type='submit' value='submit dynamic' /></form></li>"
$("#list-container").append(formHTML);
$('.submit-form').submit(function(e){
alert("test");
e.preventDefault();
});
});
这样,您将创建表单,然后将侦听器添加到提交事件。
用于创建事件侦听器函数的顶部代码在将 html 代码段插入 DOM 之前运行,因此它不会绑定到实际窗体。您希望使用 .on() 将事件绑定到将来添加的 DOM 内容。只需查看 .on() 的 jquery 文档,非常不言自明。
您还可以重新组织代码,以便在插入 HTML 代码段后设置 .submit(),并且也应该对您有用。
对于 DOM 中的新对象,我们必须使用 "on" jQuery 函数。 http://api.jquery.com/on/因此,请尝试按照建议更改文档的正文。
$(document).on("submit", ".submit_form", function(e){
e.preventDefault();
alert("test");
});
话虽如此,如果您想发送表单,则不应使用"e.preventDefault"。我不知道是否是你的情况,因为 e.preventDefault() 将阻止默认事件的发生。如果您想更好地了解这一点,请参阅此帖子。event.preventDefault() vs. return false
注意:使用submit_form代替提交表单
- 如何将getJson的响应保存在全局变量中
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 使用angularjs向浏览器发送servlet响应(下载功能)
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 不再使用innerHTML进行AJAX响应.(代码未得到响应)
- 为什么可以't我使用了AJAX响应的一部分
- 响应动画手风琴不工作
- 如何从SeleniumWebdriver获取异步Javascript响应
- Ajax调用在Firefox中不会自动响应
- 可以在响应时隐藏iphone上的“播放”按钮以进行视频播放
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- 如何在 JavaScript 和 HTML 中更改对输入框的提示响应
- IIS动态HTTP响应标头
- 预期响应包含一个对象,但在angular js中得到一个数组错误
- Ajax响应转换
- 使Intro.js工具提示响应
- 如何在 JavaScript 中访问 data.submit() 的 json 响应对象
- 用javascript创建的HTML表单不会响应.submit
- 添加对 jquery .submit() 的回调以读取上传的错误响应
- 从form.submit()获取Ajax响应到PHP