Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.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 Jquery关于提交而不循环_Javascript_Jquery_Submit - Fatal编程技术网

Javascript Jquery关于提交而不循环

Javascript Jquery关于提交而不循环,javascript,jquery,submit,Javascript,Jquery,Submit,我正在制作一个事件,页面检查是否需要通过POST提交数据,或者简单的ajax调用是否合适。IE:有一个文件,如果没有文件,它需要处理上传,提交数据并继续使用页面 $(document).on("submit", "form", function (e) { e.preventDefault(); if($(this).find('[name=file]').val()) { // HAS FILE SUBMIT /* If I

我正在制作一个事件,页面检查是否需要通过POST提交数据,或者简单的ajax调用是否合适。IE:有一个文件,如果没有文件,它需要处理上传,提交数据并继续使用页面

$(document).on("submit", "form", function (e) { 
     e.preventDefault();
     if($(this).find('[name=file]').val()) { // HAS FILE SUBMIT
          /*
              If I use $(this).submit() then it just loops.  I figured return true might work or putting e.preventDefault(); after this code
          */
     }


     // If it made it past that if then does ajax things that are fine.
}

提前谢谢。

我没有测试它,但您不能先测试文件,然后,如果没有文件,请执行“防止默认值”(或返回false)操作吗

使用jQuery的
$(this).submit()
将触发事件处理程序,并阻止默认操作,因此表单从不提交,而只是循环

要阻止这种情况发生,请改用本机
this.submit()

$(document).on("submit", "form", function (e) { 
    e.preventDefault();
    if ($(this).find('[name=file]').val()) { // HAS FILE SUBMIT
         this.submit();
    } else {
         $.ajax(options); // ...etc
    }
}

只需使用
this.submit()
来实际提交表单,而不只是触发事件处理程序?@adeneo这是正确的答案,请发布它,我将接受它。如果使用jquery,它将只是循环。我也应该试一下。另一个答案是无法挽救的。是的,我说我已经在评论中试过了,它不起作用。啊,我看到评论必须滚动,你没有读到我已经写过了。解释一下
这个
$(这个)
之间的区别可能不是个坏主意。
$(document).on("submit", "form", function (e) { 
    e.preventDefault();
    if ($(this).find('[name=file]').val()) { // HAS FILE SUBMIT
         this.submit();
    } else {
         $.ajax(options); // ...etc
    }
}