4

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

我正在做的是这个,#formDialogButton通过#accordion包含一个. 当客户端单击提交时,它应该在 php 执行数据库内容的地方触发并返回. .ajax()#userForminput type=submit.ajax()#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" />以形式返回 a 。但我无法“找到”它做任何事情。

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

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

4

3 回答 3

3

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

$(".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');
}); 
于 2012-12-20T14:19:05.643 回答
0
    $(".submitAndReturn").on("click", function() {
    alert ('as .submit and return is dynamically loaded. so, use on function');
    });  
于 2012-12-20T13:50:27.133 回答
0

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

如果我理解正确的.formDialogButtonDOM 元素正在.ajax()回调事件中加载。

如果您在页眉或页面末尾加载上述有问题的 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
  }
});
于 2012-12-20T14:31:04.257 回答