ファイルアップロードフォームがあります:
<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 行をアラートに置き換えてみましたが、フォームは画像をアップロードし、ページをリロードしてから、遅すぎるアラートを表示します。
ファイルアップロードフィールドが空かどうかを確認した後、送信ボタンを置き換えるにはどうすればよいですか?