非表示の入力で正しい値を取得するのに問題があります。
以下に、ユーザーがボタンをクリックするたびにテーブルに追加されるフォームがあります。
var $fileImage = $("<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target_image' onsubmit='return imageClickHandler(this);' class='imageuploadform' >" +
"<p class='imagef1_upload_form' align='center'><br/><span class='msg'></span><label>" +
"Image File: <input name='fileImage' type='file' class='fileImage' /></label><br/><br/><label class='imagelbl'>" +
"<input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' /></label>" +
"<input type='hidden' class='numimage' name='numimage' value='" + numimage + "' /></p>" +
"<iframe class='upload_target_image' name='upload_target_image' src='#' style='width:0px;height:0px;border:0px;solid;#fff;'></iframe></form>");
$image.append($fileImage);
これが私が受けている問題であり、次の形式の隠された入力を処理します。
<input type='hidden' class='numimage' name='numimage' value='" + numimage + "' />
2つのフォームをテーブルに追加するとします。1つは行1のフォーム(非表示の入力の値は1)、もう1つは行2のフォーム(非表示の入力の値は2)です。
ここで、フォーム1を使用してファイルをアップロードすると、非表示の入力の値は1に等しくなります。これは正しいです。次に、フォーム2を使用してファイルをアップロードすると、入力の値は2になります。これで問題ありません。
問題は、フォーム1に戻って別のファイルをアップロードした場合、コーディング方法が原因で、実際には1であるはずなのに、非表示の入力の値が2のままであるということです。
だから私の質問は、隠された入力の値がファイルのアップロードに使用されるフォームに応じた数になるように、以下のコードをどのように変更できるかということです(使用されるフォーム1の場合は値= 1、フォーム2の場合は値= 2)使用済み、フォーム3の値= 3使用済みなど)
以下はコードです:
var numimage = 0;
...//form code from top goes here
//CODE BELOW INCREMENTS A QUESTION NUMBER AND INCREMENTS THE HIDDEN VALUE FOR EACH ROW ADDED
$('.num_questions').each( function() {
var $this = $(this);
var $questionNumber = $("<input type='hidden' class='num_questionsRow'>").attr('name',$this.attr('name')+"[]")
.attr('value',$this.val());
$qid.append($questionNumber);
++numimage;
$(".numimage").val(numimage);
});
//BELOW STARTS THE UPLOADING OF THE FILE
function startImageUpload(imageuploadform){
$(imageuploadform).find('.imagef1_upload_process').css('visibility','visible');
$(imageuploadform).find('.imagef1_cancel').css('visibility','visible');
$(imageuploadform).find('.imagef1_upload_form').css('visibility','hidden');
sourceImageForm = imageuploadform;
});
//BELOW IS CODE FOR WHEN FILE UPLOAD STOPS
function stopImageUpload(){
$(sourceImageForm).find('.imagef1_upload_form .msg').html(result);
$(sourceImageForm).find(".fileImage").replaceWith("<input type='file' class='fileImage' name='fileImage' />");
$(sourceImageForm).find('.imagef1_upload_form').css('visibility','visible');
return true;
}