2014-02-06 64 views
0

我有一個使用JavaScript生成的表單,然後插入到彈出的模態窗口中。提交使用jQuery和AJAX動態插入頁面的表單?

我的表單HTML沒有生成或插入到頁面中,直到DOM生成整個頁面(它是從一個Socket post事件觸發的,然後使我的popup打開並插入此表單的HTML)

還可以有插入到頁面中,從而不只是1

這裏是生成並插入到頁面的表單代碼示例多種形式...

<form action="/" id="logCallForm" class="logCallForm"> 
    <div class="col-xs-10"> 
     <input class="form-control input-sm" type="text" name="subject" placeholder="Subject"> 
     <br><input type="hidden" name="qmsId" value="1c885762-27d5-58ef-9f95-527ae750c9be"> 
     <input type="hidden" name="dateTime" value="2013-11-07 01:05:19"> 
    </div> 
    <input type="submit" value="Save Call"> 
</form> 

現在下面是一些已經存在的JavaScript運行在同一頁面上,我的目標是能夠使用AJAX發佈這些表單。現在它似乎沒有檢測到代碼,但當我點擊提交按鈕時,它會加載一個新頁面,而不是通過AJAX提交。

請幫幫我嗎?我很確定這與我的表單在頁面已被加載後添加有關嗎?

$(function() { 

    $('.logCallForm').on('submit', function (e) { 

     var url = '/custom/modules/nam_call_logger/call_server.php'; 

     $.ajax({ 
       type: "POST", 
       url: url, 
       data: $(this).serialize(), // serializes the form's elements. 
       // qmsId dateTime subject 
       success: function(data) 
       { 
        alert(data); // show response from the php script. 
       } 
     }); 
     e.preventDefault(); 

    }); 

}); 

回答

2

嘗試在熱鬧方式訂閱:

$(document).on('submit', '.logCallForm', function (e) { 

基本上,這將訂閱submit事件選擇器匹配的元素,即使這些元素還沒有在當時存在你正在訂閱(也就是頁面的DOM負載)。它將爲監聽,以便將來可能添加到DOM中且與選擇器匹配的元素。