进度条达到100%时未提交的表单

时间:2017-08-02 07:33:22

标签: javascript php jquery html forms

我在下面附上了我的php的简化版本。 我有一个带有多个输入字段+上传文件选项。

提交表单时,上传栏会启动,当达到100%时,我会看到“成功”警告,然后是“完整”警报。 (两次???) 然而,“action = sendEmail.php”形式都没有被触发而不是“url:sendEmail.php” - 我想要添加两个以查看是否有任何触发。 注意,当我删除ajaxFrom触发器“sendEmail.php”时,就会执行。

那么我做错了什么?什么应该改变,使“sendEmail.php”进行。 另外,为什么我看到成功&两次完成警报? 的 Success => complete => success => complete

基本形式:

 <form id="formmail" class="form-horizontal" name="formmail" method="POST" action="sendEmail.php" enctype="multipart/form-data">
.
.
.

我尝试(当然是单独使用)提交按钮:

<input class="btn btn-sm" name='submit' type='submit' id='submit' tabindex='100' value="Submit"/>

一个简单的按钮:

<button class="btn btn-sm" name='submit' id='submit'>Submit</button>

javascript:

var progress
$(document).ready(function(){   
    $("#submit").click(function(){
        var form_data = $("#formmail").serialize();
        $("#formmail").ajaxForm({
            type: "POST",
            url: "sendEmail.php",
            data: form_data,
            beforeSend: function() {
                $("#progressBar").removeClass("hidden");
                progress = "0%";
                $('.progress-bar').css("width", progress);
                $('.progress-bar').html(progress);
            },
            uploadProgress: function (event, position, total, percentComplete) {
                progress = percentComplete + "%";
                $('.progress-bar').css("width", progress);
                $('.progress-bar').html(progress);  
            },
            success: function (data){
                alert("success");
            },
            complete: function(xhr){
                if(xhr.responseText) {
                    alert("complete");
                }
            },
        })
        .submit();
    });
});

1 个答案:

答案 0 :(得分:0)

您的代码有一个非常常见的问题。默认情况下,“提交”按钮((tap))将自动提交表单。将<input type="submit">函数与jQuery绑定不会阻止表单提交。因此,对于每次单击“提交”按钮,click()可能会被调用两次,一次是HTML表单提交,另一次是JS。你可能只想要其中一个。

您可以将按钮类型更改为sendEmail.php,或在type="button"功能中添加event.preventDefault()

顺便提一下,以下是您的代码的一些建议:

  1. 对于HTML整洁,不要混用单引号和&amp; HTML结构中的双引号。另外,请删除未使用的click()class属性。
  2. 仅使用小写文件名。 URL中的大写字母对用户不友好。