在动态加载的PHP表单上放置JavaScript事件

时间:2012-08-29 18:27:02

标签: php javascript jquery ajax

解决方案:

感谢Shmiddty,我想出了这个:

$( static parent element ).on('submit', '#add_client', function(e) {
    e.preventDefault();
    firm.addUser( $(this), '/ci/firm/add_client', 'client' );
});

说明

我为客户构建了一些表单。我希望根据他点击的链接动态创建此表单。此表单将自动填充一些数据。

以下是将创建动态内容的jQuery

$('.create').on('click', function(e) {
    e.preventDefault();
    utility.create_modal(); // dynamic div with form
});

这是创建div并将PHP表单放在html中的函数:

$(document.createElement('div')).attr({
    'class' : 'span3'
}).html( create_div( '/ci/firm/return_user_form/client', 'html' ) ),

以下是ajax功能:

var result = '';
$.ajax({
    url: path, 
    type: 'get', 
     dataType: type,
     async : false,
     success: function(data) {
         result = data;
     } 
    });
return result;

这是从PHP文件中提取的html :(这是一个巨大的形式,我只是要包含有问题的按钮)

<input type="submit" name="submit" value="Add Client"  id="add_client">

问题:

此动态html内容中包含一个表单。我想在我包含的表单上放置JavaScript事件。这可能吗?如果是这样,我该怎么做?

这不起作用(#add_client是表单中按钮的ID):

$('#add_client').on('click', function(e) {
    e.preventDefault();
});

1 个答案:

答案 0 :(得分:2)

$('some_parent_selector').on('click', '#add_client', function(e) {
    e.preventDefault();
});

on侦听器需要一个父对象(不是动态的)来侦听冒泡的点击事件。然后,当事件冒泡到父级时,它会确定它是否来自'#add_client',如果是,则会调用您的匿名函数。