表单提交与jquery

时间:2012-06-27 20:45:04

标签: forms submit

提交表单时,我尝试使用id提交表单并通过JQuery调用提交,但是当然,第一个脚本让我处于无限循环中。

使用plupload后,我注意到他们使用另一种方式提交表单,这不会导致无限循环。

我试图找到有关此内容的信息,但我似乎无法获得有关此内容的具体信息?

$('#test').submit(function(e) {
   alert("here");
   $('#test').submit();
   return false;
});

$('form').submit(function(e) {
   alert("here");
   $('form')[0].submit();
   return false;
});

1 个答案:

答案 0 :(得分:0)

开始编辑

在第一种情况下,您将在jQuery对象上触发jQuery submit事件(请参阅http://api.jquery.com/submit/

在第二种情况下,您在javascript对象上调用javascript submit方法。它不会触发提交事件。

不一样'提交'在这两种情况下。

在第二种情况下,如果你更换:

$('form')[0].submit();

$($('form')[0]).submit();

你最终会得到一个无限循环。

结束编辑

事实上,使用plupload,重点是等待您能够成功提交表单的时间。主要功能是订阅StateChanged事件。

它的工作原理如下:

1-首先检查队列是否为空。如果是,请验证表单提交(返回true)

如果队列不为空,则

2-

a-启动加载剩余文件    b-订阅未来' StateChanged'将检查队列的事件。如果此时为空,请转到将成功通过的步骤1(因为此时队列将为空)    c - 取消表单提交(队列当前不为空)

一些带注释的代码:

    // Client side form validation
    $('form').submit(function(e) {
        var myForm = e.currentTarget;
        var uploader = $(item).pluploadQueue();

        // if files in queue upload them first. Cancel current form submission.
        // Subscribe to 'StateChanged' to check if the queue is empty and try 
        // a new submission, each time a file is finished uploading

        if (uploader.files.length > 0) {
            // When all files are uploaded submit form
            uploader.bind('StateChanged', function() {
                if (uploader.files.length === (uploader.total.uploaded + uploader.total.failed)) {
                    myForm.submit(); // 
                }
            });
           // start uploading remaining files. 
           // End of each upload will trigger the 'StateChanged'
            uploader.start(); 
           // there are files in queue. (the reason we are running current block)
           // Cancel current form submission 
            return false;  
        }
        return true; // the queue is empty, validate current form submission
    });

希望这会有所帮助