Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用onSubmit时提交表单_Javascript_Jquery - Fatal编程技术网

Javascript 使用onSubmit时提交表单

Javascript 使用onSubmit时提交表单,javascript,jquery,Javascript,Jquery,我的提交表格是: onsubmit="validate(this); return false;" validate()如下所示: function validate(obj) { $.ajax({ url : "ajax/validate_check.php", type : "POST", data : $("#" + obj.id).serialize(), success : function(data) {

我的提交表格是:

onsubmit="validate(this); return false;"
validate()如下所示:

function validate(obj) {
    $.ajax({
        url : "ajax/validate_check.php",
        type : "POST",
        data : $("#" + obj.id).serialize(),
        success : function(data) {
            $('#' + obj.id + ' :input.form_errors').removeClass('form_errors')
            data = $.parseJSON(data);
            if(data['error_count'] >= 1) {
                $.each(data, function(i, item) {
                    $('#' + i).addClass('form_errors');
                });
            } else {
                $('#' + obj.id).submit();
            }
        }
    });
}

当我有0个错误时,它试图提交表单,但我得到一个无限循环。我意识到这是因为onSubmit再次调用了该函数。当我准备好的时候,我如何提交表格?正确的方法是什么

验证函数应根据错误返回true或false

  onsubmit = "return validate(this)"

  function validate(obj){
     ...
     if(data['error_count'] >= 1) {
            $.each(data, function(i, item) {
                $('#' + i).addClass('form_errors');
            });
            return false; //stop submitting
        } else {
            return true;//continue submitting
        }
  }
尽管如此,由于您使用的是jquery:

     $("#formid").submit(function(){
           //your validation code
     });
可能更好


查看更多详细信息。有一个很好的例子。

根据错误,验证函数应该返回true或false

  onsubmit = "return validate(this)"

  function validate(obj){
     ...
     if(data['error_count'] >= 1) {
            $.each(data, function(i, item) {
                $('#' + i).addClass('form_errors');
            });
            return false; //stop submitting
        } else {
            return true;//continue submitting
        }
  }
尽管如此,由于您使用的是jquery:

     $("#formid").submit(function(){
           //your validation code
     });
可能更好


查看更多详细信息。有一个很好的例子。

您已经提交表单进行验证

}上,否则{
您将无法再次提交它,正如您所注意到的。您应该调用一个函数将它提交到
处理经过验证的数据的任何地方。php

尽管我建议使用相同的
.php
来验证和处理数据-每个类都有一个类或函数。这样,您可以:

$('.forms_that_need_validation').submit(function() {
$.ajax({
    url : "ajax/data_validation_and_processing.php",
    type : "POST",
    data : $(this).serialize(),
    success : function(data) {
        $(this + ' :input.form_errors').removeClass('form_errors')
        data = $.parseJSON(data);
        if(data['error_count'] >= 1) {
            $.each(data, function(i, item) {
                $('#' + i).addClass('form_errors');
            });
        } else {
            location.reload();
        }
    }
});
return false;
});

发生的情况是,如果数据未被验证,它将返回一个错误-您应该编写代码
.php
,以便在未验证的情况下不处理数据。否则,数据已被验证和处理,然后它将重新加载页面。

您已经提交表单进行验证

}上,否则{
您将无法再次提交它,正如您所注意到的。您应该调用一个函数将它提交到
处理经过验证的数据的任何地方。php

尽管我建议使用相同的
.php
来验证和处理数据-每个类都有一个类或函数。这样,您可以:

$('.forms_that_need_validation').submit(function() {
$.ajax({
    url : "ajax/data_validation_and_processing.php",
    type : "POST",
    data : $(this).serialize(),
    success : function(data) {
        $(this + ' :input.form_errors').removeClass('form_errors')
        data = $.parseJSON(data);
        if(data['error_count'] >= 1) {
            $.each(data, function(i, item) {
                $('#' + i).addClass('form_errors');
            });
        } else {
            location.reload();
        }
    }
});
return false;
});

发生的情况是,如果数据未被验证,它将返回一个错误-您应该编写代码
.php
,以便在未验证的情况下不处理数据。否则,数据已被验证和处理,然后它将重新加载页面。

OP使用AJAX验证表单,因此这没有帮助。它似乎不起作用ng对我来说。知道为什么吗?在这种情况下,将验证移动到按钮,单击验证成功,然后提交表单。我正在考虑这个问题,但我希望用户能够按enter键提交表单。返回未定义OP使用AJAX验证表单,所以这没有帮助。这似乎对我不起作用。知道为什么吗?在t case将验证移动到按钮,单击验证成功,然后提交表单。我正在考虑这个问题,但我希望用户能够按enter键提交表单。返回未定义