如何将提交事件添加到动态生成的表单?

时间:2013-02-12 12:26:09

标签: jquery

以下是生成表单的PHP代码: form.php

 <?php
    echo '
    <form action="/wall/comment.php" method="post" id="submit-comment-form" name="'.$postid.'"> 
    <div class="write-comment-profile-pic">
    <img src= "'.$myprofilepic.'" width="30" height="30""/>
    </div>
    <div class="write-comment-textbox-wrap">
    <input type="text" class="textbox4" id="write-comment-textbox" value="Write a comment..." name="comment" style="width:65%;" />
    </div>
   </form>
   ';
   ?>

获取form.php的Jquery代码

$('#images img').click(function() { 
$.get('form.php', function(data) {
$('#image-pop-up').html(data);
});
});

这里是需要提交表单的jquery代码:

$('#image-pop-up').on('submit', '#submit-comment-form', function() { 
evt.preventDefault();       
});
index.html中的

image-pop-up div是空的 只是

<div id="image-pop-up">

</div>

这不起作用......出了什么问题?如何解决?

1 个答案:

答案 0 :(得分:6)

我怀疑问题与选择器有关,目标元素要么找不到,要么是正确的目标要素。

一些可能出错的事情:

  1. 双重ID引用是不必要的:它只是另一个可能出错的地方。
  2. 如果在执行此代码时尚未生成#image-pop-up,则永远不会绑定该事件。
  3. submit事件仅触发表单,因此您需要确保这是您要定位的内容。
  4. 您致电preventDefault() evt,但evt未绑定事件参数。
  5. 假设#submit-comment-form是您正在处理的表单,以下代码应该有效,无论执行时是否有任何元素可用:

    $(document).on('submit', '#submit-comment-form', function(evt){
        evt.preventDefault();
    })