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 + "' />

假设我将两种形式附加到表中,第 1 行中的一种形式(隐藏输入中的值应为 1)和第 2 行中的一种形式(隐藏输入中的值应为 2)。

现在,如果我使用表单 1 上传文件,那么隐藏输入中的值等于 1,这是正确的。如果我然后使用表单 2 上传文件,则输入中的值等于 2。这很好。

问题是,如果我恢复到表单 1 并上传另一个文件,由于我的编码方式,隐藏输入的值仍然是 2,而实际上它应该是 1。

所以我的问题是如何更改下面的代码,以便隐藏输入的值是取决于用于上传文件的表单的数字,(使用的表单 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 回答