0

非表示の入力で正しい値を取得するのに問題があります。

以下に、ユーザーがボタンをクリックするたびにテーブルに追加されるフォームがあります。

  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;
}
4

1 に答える 1

0

このメソッドを任意の場所に追加します

function GetFormCount(){
  var frm = $('FORM');

    if(frm[0] != undefined)
    {
       if(length in frm )
       {
          return  frm.length ;
       }
        return 1;
    }
    return 0;
}

JS フォームの作成を変更する

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='" + GetFormCount()+ "' /></p>" +
    "<iframe class='upload_target_image' name='upload_target_image' src='#' style='width:0px;height:0px;border:0px;solid;#fff;'></iframe></form>");

ps私が理解しているように、各フォームにこのフィールドがあります。

于 2012-09-26T20:56:23.530 に答える