检查文件上载字段是否为空后,如何更换提交按钮?

时间:2012-07-02 02:39:04

标签: php jquery file-upload

我有一个文件上传表单:

<form method="post" enctype="multipart/form-data">
  <input type="file" name="image_1" /> 
  <input type="submit" name="upload_photo" id="upload_photo" />
</form>

我有一个上传文件的php脚本,但我注意到每当我上传一个更大的文件时,表单提交和重新加载的页面最多可能需要10秒。用户点击提交后,我希望将提交按钮替换为消息。我写了一些jQuery使这个工作:

$("#upload_photo").click(function() {                       
  $("#upload_photo").replaceWith('<p>Image is uploading. Please wait...</p>');                      
});

这很好地取代了提交按钮,但问题是,即使文件上传字段为空,它也会替换提交按钮。因此,在用户单击提交按钮后,我需要检查字段上载字段是否有值,以及是否用该消息替换按钮。我在这里尝试过:

if($_FILES['image_1']['tmp_name'] != '') {
  $image_uploaded = true;
}

if($image_uploaded == true) { //If a file has been uploaded
  echo '<script type="text/javascript">
      $("#upload_photo").replaceWith("<p>The image is uploading. Please wait...</p>");
        </script>
  ';
}

不幸的是,这不起作用,文件上传而不替换提交按钮。我尝试用警报替换.replaceWith行,但表单将上传图像,重新加载页面,然后显示太迟的警报。

检查文件上传字段是否为空后,如何更换提交按钮?

2 个答案:

答案 0 :(得分:4)

只需检查文件输入字段中是否有值

if ($("[name=image_1]").val()){
    $("#upload_photo").replaceWith('<p>Image is uploading. Please wait...</p>'); 
}

答案 1 :(得分:0)

我经常这样做:

1)禁用提交按钮

$(this).attr('disabled', 'disabled')

和2)更改提交按钮上的文字。

$(this).attr('value', 'Please wait ...')

这是一个jsfiddle。

http://jsfiddle.net/Vqyc6/8/