jQuery submit()和AJAX事件;如何触发常规表单提交?

jQuery submit()和AJAX事件;如何触发常规表单提交?,jquery,forms,form-submit,Jquery,Forms,Form Submit,我正在处理一个项目,当单击submit按钮时,我捕获事件并通过外部服务运行表单以检查某些内容是否有效 如果有问题,我弹出一个对话框,告诉用户有问题,并给他们覆盖选项继续 问题是如何触发表单提交。如果我只使用.submit,它会再次将表单发送到对话框中 $('#editAddr').submit(function(){ var checkString = addrString(); $.getJSON('/validate.php' + checkString, function(

我正在处理一个项目,当单击submit按钮时,我捕获事件并通过外部服务运行表单以检查某些内容是否有效

如果有问题,我弹出一个对话框,告诉用户有问题,并给他们覆盖选项继续

问题是如何触发表单提交。如果我只使用.submit,它会再次将表单发送到对话框中

$('#editAddr').submit(function(){
    var checkString = addrString();
    $.getJSON('/validate.php' + checkString, function(data){
        if(data == 0){
            var confw = '';
            confw += '<div><p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>';
            confw += 'Failed validation.</p></div>';

            var $dialog = $(confw).dialog({
                title: "Validation Problem",
                modal: true, resizable: false, width: 500,
                buttons: {
                    "Edit": function(){
                        $(this).dialog('close');
                    },
                    "Override": function(){
                        $(this).dialog('close');
                        $('#editAddr').submit();
                    }
                }
            });
        }else{
            $('#editAddr').submit();            
        }
    });

    return false;
});
如何通过单击对话框按钮正确提交此表单


编辑:确保表单中没有id=submit的按钮,否则会破坏jQuery。submit

问题来自于您连接逻辑的方式

表单中的按钮应为常规按钮,而不是提交按钮 然后,它的onaction属性应该指向上面的方法

在此之后,form.submit应按预期工作


另一个选项是在方法上添加一个标志。

问题来自于您连接逻辑的方式

表单中的按钮应为常规按钮,而不是提交按钮 然后,它的onaction属性应该指向上面的方法

在此之后,form.submit应按预期工作

另一个选项是在方法上添加标志。

只需在表单的dom元素上调用.submit即可

我认为您可以从jQuery获得如下信息:

$('#editAddr')[0].submit();  // goes in your Override button logic
只需在表单的dom元素上调用.submit即可

我认为您可以从jQuery获得如下信息:

$('#editAddr')[0].submit();  // goes in your Override button logic

添加在submit函数开头选中的isOverride或isValid布尔值以绕过进一步处理。

添加在submit函数开头选中的isOverride或isValid布尔值以绕过进一步处理。

而不是绑定到表单的submit事件,改为绑定到submit按钮的click事件。通过这种方式,您可以捕获submit事件的click事件,并在需要时返回false,或者继续表单上的submit事件

​$('input[type="submit"]').click(function(e){
    e.preventDefault();
    if() // invalid data
    {

    }
    else // good to go
    {
        $('form').submit();
    }
})​

如果有人禁用JavaScript,这个解决方案也会很好地降级。我读过的其他一些解决方案不允许这样做。

与其绑定到表单的提交事件,不如绑定到提交按钮的单击事件。通过这种方式,您可以捕获submit事件的click事件,并在需要时返回false,或者继续表单上的submit事件

​$('input[type="submit"]').click(function(e){
    e.preventDefault();
    if() // invalid data
    {

    }
    else // good to go
    {
        $('form').submit();
    }
})​

如果有人禁用JavaScript,这个解决方案也会很好地降级。我读过的其他一些解决方案不允许这样做。

您的问题是,在Jquery对象上调用submit会再次通过Jquery onsubmit运行它。一旦您完成了验证程序,您只需要在DOM对象上调用它-您可以通过

document.GetElementById(editAddr).submit();
或与

$("#editAddr").get(0).submit();

至少,这是验证提交处理程序的工作方式。我假定它与标准提交处理程序的工作方式相同。

您的问题是,在Jquery对象上调用submit会再次通过Jquery onsubmit运行它。一旦您完成了验证程序,您只需要在DOM对象上调用它-您可以通过

document.GetElementById(editAddr).submit();
或与

$("#editAddr").get(0).submit();

至少,这是验证提交处理程序的工作方式。我认为它与标准提交处理程序的工作方式相同。

如果有人禁用JavaScript,没有提交按钮将使表单变得无用。同样的经验观点:如果有人关闭internet,浏览器将无用。如果有人关闭Cookie,浏览器将毫无用处。如果有人禁用JavaScript,没有提交按钮将使表单毫无用处。同样的经验观点:如果有人关闭互联网,浏览器将毫无用处。如果有人关闭Cookie,浏览器将毫无用处。这听起来像是固有的表单提交数据没有正确设置。试着注释jquerysubmit函数,看看submit按钮是否能自己工作。如果在没有重写和检查逻辑的情况下,这项功能不起作用,您将永远无法使用它。错误:对象的属性“submit”不是函数。由id为submit的按钮引起。这听起来像是固有的表单提交数据没有正确设置。试着注释jquerysubmit函数,看看submit按钮是否能自己工作。如果在没有重写和检查逻辑的情况下,这项功能不起作用,您将永远无法使用它。错误:对象的属性“submit”不是函数。由id为submit的按钮引起。请注意,您在最初的对话中从未提到过降级question@OlivierRefalo-你因为我的积极主动而责骂我?请注意,你在最初的谈话中从未提到过有辱人格question@OlivierRefalo-你因为我主动而责骂我?