Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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
Jquery 使用ajax重新提交表单时隐藏错误_Jquery_Ajax - Fatal编程技术网

Jquery 使用ajax重新提交表单时隐藏错误

Jquery 使用ajax重新提交表单时隐藏错误,jquery,ajax,Jquery,Ajax,如果用户没有正确填写所有字段,则会显示一个包含所有错误的错误块。此时,如果他们再次单击submit,当小加载程序旋转并再次提交表单时,错误消息将保留在那里。我试图隐藏错误消息,但即使在初次提交时也隐藏了错误消息,这是不对的。如果错误消息是可见的,它只需要隐藏它 $.ajax({ type: "POST", url: "process.php", data: str, beforeSend: function() { $("#contact-subm

如果用户没有正确填写所有字段,则会显示一个包含所有错误的错误块。此时,如果他们再次单击submit,当小加载程序旋转并再次提交表单时,错误消息将保留在那里。我试图隐藏错误消息,但即使在初次提交时也隐藏了错误消息,这是不对的。如果错误消息是可见的,它只需要隐藏它

$.ajax({
    type: "POST",
    url: "process.php",
    data: str,
    beforeSend: function() {
        $("#contact-submit").hide();
        $("#loading").show(); 
    },
    success: function(response) {
        $('#error').html(response);
        if (!response || response.length == 0 || response.indexOf("Your message was sent") >= 0)
        $("#contact-form").hide();
                $("#contact-submit").show();
                $("#loading").hide();
这是我的新解决方案:

 $.ajax({
            type: "POST",
            url: "process.php",
            data: str,
            beforeSend: function() {
                $("#contact-submit").hide();
                 $("#loading").show(); 
                  },
          success: function(response) {
    $('#error').html(response);
   if (!response || response.length == 0 || response.indexOf("Your message was sent") >= 0)
        $("#hfarm-contact-form").hide();
                $("#contact-submit").show();
                $("#loading").hide();
              $('#error').fadeIn().html(response);  
                          setTimeout(function(){  
                               $('#error').fadeOut("Slow");  
                          }, 5000); 
您可以使用存储与contact submit元素关联的变量:

  • 如果此值为true:则不可能再次提交,因为这是必需的 等待上一个ajax完成
  • 如果该值为false,则可以执行新的ajax调用
此外,您可以使用

complete: function(jqXHR, textStatus ) {
重置显示和隐藏元素等值加上此新变量的值

delay函数仅用于代码段目的,以降低执行速度。 我的片段:

功能延迟(ms){
var cur_d=新日期();
var cur_ticks=cur_d.getTime();
var ms_passed=0;
while(ms_通过

加载。。。。。。。

感谢您的回复。这对我来说是相当先进的。如果用户在初次提交后再次按submit,是否有更简单的方法来消除错误消息?另外,看起来您在成功提交后删除了隐藏整个表单的代码(我想?),好的,当然。我得绕着它转一圈,看看能走多远。一旦我取得了进步(或没有进步),我会发回邮件;)我已经编辑了我最初的帖子,我想选择最适合我的答案。当然,除非有人认为这是不正确的或不起作用。对不起,我不完全理解你的评论。你是说我的代码放错地方了吗?@Jonathan是的,我想你的支票代码放错地方了。