たまたま、アプリケーションに大きな問題を引き起こす問題に気付きました。
ここに、ビデオをアップロードするアプリケーションがあります。応用
私が抱えている問題は、ビデオをアップロードしてからAdd Question
ボタンをクリックして別のファイル入力を新しい行に追加すると、新しい行のUpload
ボタンが無効にならないことです。これは、私が望まない複数のファイルをアップロードできることを意味します最初のファイルのアップロードを停止してアップロードを停止し、ユーザーが大きな複数のファイルをアップロードしようとするとシステムがクラッシュする可能性があるためです。私の質問は、Add Question
ボタンをクリックすると、ファイルがアップロードされている場合、アップロードが完了するまで、追加された行のアップロード ボタンを無効にする必要があるということです。
アプリを使用するには、次の手順に従います。
を 2 回クリックして、
Add Question
2 つの新しいテーブル行を追加します。テーブルの各行には、ファイル入力が表示されます。行 1 のファイル入力でビデオを選択し (他の手順を完了する間にファイルがアップロードされるように適切なサイズのビデオを選択します)、クリックし
Upload
てビデオをアップロードします。Upload
ビデオのアップロード中はボタンが無効になっていることがわかりますビデオのアップロード中に
Add Question
ボタンをもう一度クリックして、別の行を追加します。Upload
ファイルのアップロード中に、新しく追加された行のボタンが無効になっていないことがわかります。ファイルがアップロードされている場合、このボタンと追加されている他のアップロード ボタンを無効にします。
Add Question
以下は、ボタンからテーブル行を追加する関連コードです。
function GetFormVideoCount(){
return $('.videouploadform').length + 1;
}
var qnum = 1;
var qremain = 5;
function insertQuestion(form) {
if (qnum > 5) {
return;
}
var $tbody = $('#qandatbl_onthefly > tbody');
var $tr = $("<tr class='optionAndAnswer' align='center'>");
var $video = $("<td width='17%' class='video'></td>");
$('.num_questions').each( function() {
var $fileVideo = $("<form action='videoupload.php' method='post' enctype='multipart/form-data' target='upload_target_video' onsubmit='return videoClickHandler(this);' class='videouploadform' >" +
"<p class='videof1_upload_form'><label>" +
"Video File: <input name='fileVideo' type='file' class='fileVideo' /></label><br/><br/><label class='videolbl'>" +
"<input type='submit' name='submitVideoBtn' class='sbtnvideo' value='Upload' /></label>" +
"<p class='videof1_upload_process' align='center'>Loading...<br/><img src='Images/loader.gif' /></p>" +
"<input type='hidden' class='numvideo' name='numvideo' value='" + GetFormVideoCount() + "' />" + </p>" +
"<iframe class='upload_target_video' name='upload_target_video' src='/' style='width:0px;height:0px;border:0px;solid;#fff;'></iframe></form>");
$video.append($fileVideo);
$tr.append($video);
$tbody.append($tr);
}
以下は、ファイルのアップロード プロセスを開始し、既に追加されている行のアップロード ボタンを無効にする関連コードです。
function startVideoUpload(videouploadform){
sourceVideoForm = videouploadform;
$(".sbtnvideo").attr("disabled", "disabled");
});
return true;
}
以下は、アップロードが完了したときの関数の関連コードです。
function stopVideoUpload(success, videoID, videofilename){
$(".sbtnvideo").removeAttr("disabled");
return true;
}
以下は、ビデオ アップロードのクリック ハンドラです。
function videoClickHandler(videouploadform){
if(videoValidation(videouploadform)){
window.lastUploadVideoIndex = $('.videouploadform').index(videouploadform);
return startVideoUpload(videouploadform);
}
return false;
}
アップデート:
function startVideoUpload(videouploadform){
$(".sbtnvideo").click(function(event){
$(".sbtnvideo").attr("disabled", "disabled");
event.preventDefault();
});
return true;
}
function stopVideoUpload(success, videoID, videofilename){
$(".sbtnvideo").click(function(event){
$(".sbtnvideo").removeAttr("disabled");
return true;
});
return true;
}