我的表单提交有问题,这是交易。我正在创建一个图像网站,我想为每个图像创建注释,所以我有一个锚点链接,点击时显示注释表单,即将html加载到不在第一个位置的网页中,所以页面内部加载的表单未提交。
动态加载到网页的表单是否有可能无法提交?这有什么其他问题吗?我甚至尝试在加载的内容中添加<a href="#" id="test">Click me</a>
之类的内容,然后添加了
$("#test").click(function(){
alert("SOMETHING");
});
到我的javascript,它也不会发出警报..我做错了什么?
修改
好的,这是我如何加载表格..
我的图片下方有一个锚点链接:
<a href="javascript:;" onclick="showComments('22');" class="answer_comment">Add image content</a>
这是javascript,它是文档就绪函数:
function showComments(post){
var xHTML = "<div class=\"addComment\">";
xHTML += "<form action=\"<?=base_url()?>images/post_comment/" + post + "\" method=\"post\" id=\"comment_form\" name=\"comment_form\">";
xHTML += "<input type=\"hidden\" id=\"comment_post_id\" name=\"comment_post_id\" value=\"" +post + "\"/>";
xHTML += "<textarea name=\"comment_text\" class=\"comment\" rows=\"8\" cols=\"40\"></textarea>";
.....
像这样我填写我的评论表格..需要更多代码吗?
答案 0 :(得分:6)
动态加载的元素也必须在您的情况下进行操作,以提醒您:
$("#test").live('click', function() {
alert("SOMETHING");
});
这将激活id="test"
的任何元素,无论是否加载了ajax。对于您要使用的任何处理程序,应使用相同的样式。阅读.live()
documentation以获取完整的故事...基本上它位于根DOM级别,用于监听点击并对其进行操作,因此在您定义事件处理程序时它不关心是什么或不存在,这就是你想要的动态加载内容。
答案 1 :(得分:0)
在函数()之后不需要{
吗?
和}' before the
);`在第三行?
$("#test").click(function() {
alert("SOMETHING");
});
答案 2 :(得分:0)
使用AJAX获取表单通常不是问题。
考虑到表单无法提交的唯一原因是:
这是无效的HTML - 应该可以找到使用firebug
提交时,您通过其ID(如$('#comment_form').submit();
)来解决该问题,因为已经有一些带有该ID的元素,因此ID失败了。要确定是否是这种情况,请尝试在表单中注入正常的<input type=submit>
,看看是否有效。
您正在将其注入另一个<form>
元素 - 很容易找到Firebug
答案 3 :(得分:0)
您最后在代码中添加了额外的{
:
$("#test").click(function()
alert("SOMETHING");
{);
更正一下,如果它仍然不起作用,请尝试使用live
方法,该方法适用于现在以及将来的元素。
$("#test").live('click', function(){
alert("something");
});
另外,请确保如果有多个表单,则不会重叠。
答案 4 :(得分:0)
动态添加的表单应该与原始html中的表单相同。确保在添加元素或使用live方法后添加事件处理程序。