使用单个ajax()调用填充多个div,表单提交按钮失败

时间:2012-12-20 13:47:49

标签: javascript jquery ajax

简短的问题是,当我填充<div>包含type=submit按钮时,.click(function(){...}功能失败。

我正在做的是,#formDialogButton打开#accordion填充.ajax(),其中#userForm包含input type=submit。当客户端点击提交时,它应该触发.ajax() php执行数据库操作并返回#userform之一。

            $(".formDialogButton").click(function(){
            var userDialog = "#" + this.id + "Dialog";
            $("#userForm, #siteForm, #limitForm").html("<img src='ajax-loader.gif' />");
            $("#userForm, #siteForm, #limitForm").load("ajax.php", {op: "forms"}, function(responseTxt,statusTxt,xhr){
                $("#userForm").html($("#user").html());
                $("#siteForm").html($("#site").html());
                $("#limitForm").html($("#limit").html());
                if(statusTxt=="success") {
                    $(userDialog).dialog({
                        autoOpen: false,
                        draggable: true,
                        modal: true,
                        resizable: true,
                        width: 700,
                        position: { within: "#mainContent" }
                    });
                    $(userDialog).dialog("open");
                    $( "#accordion").accordion({ 
                        collapsible: true,
                        heightStyle: "content",
                    });
                };
                if(statusTxt =="error")
                    alert("Error: "+xhr.status+": "+xhr.statusText);
            });
        });  

这是有效的,并在表单中返回<input class="submitAndReturn" type="submit" value="Submit" />。但我无法找到&#34;它可以做任何事情。

            $(".submitAndReturn").click(function() {
        alert ('this is where I call my regular .formSubmitButton and let  success: function() do a .formDialogButton ');
        });  

我是一个自学成才的业余爱好者所以请原谅我并尽力帮助。感谢

3 个答案:

答案 0 :(得分:3)

听起来您正试图在页面上加载元素之前添加click事件。变化

$(".submitAndReturn").on("click", function() {
    alert ('as .submit and return is dynamically loaded. so, use on function');
}); 

$(document).on("click", ".submitAndReturn", function(e) {
    e.preventDefault(); //cancel the click action if needed
    alert ('as .submit and return is dynamically loaded. so, use on function');
}); 

答案 1 :(得分:0)

    $(".submitAndReturn").on("click", function() {
    alert ('as .submit and return is dynamically loaded. so, use on function');
    });  

答案 2 :(得分:0)

  

我正在做的是这样,#formDialogBu​​tton打开#accordion填充.ajax()包含#userForm,输入类型= submit

如果我理解正确.formDialogButton.ajax()回调事件中加载了DOM元素。

如果您在标题或页面末尾加载上面讨论的javascript,很可能$(".formDialogButton").click(function()事件未附加到DOM。

这是因为在AJAX获取必须附加事件的所需DOM之前,脚本已经被触发。您需要在.ajax()成功回调中附加事件。像

这样的东西
$.ajax({
  url: 'YOUR_URL_TO_FETCH_FORM',
  success: function(data) {
    // associate click
    $(".formDialogButton").click(function() // rest of the code
  }
});