1

ファイル拡張子が正しくない場合、アラートが表示されるという問題があります。これは問題なく動作しますが、問題はファイルをアップロードしてはならないということです。以下の関数で、imageValidationが渡された場合は、「startUploadImage()」関数に移動してアップロードを開始すると述べたため、ファイルをアップロードするのはなぜですか。

function imageClickHandler(imageuploadform){ 
      if(imageValidation(imageuploadform)){ 
          return startImageUpload(imageuploadform); 
      } 
      return false;
  }

以下は、ファイル拡張子をチェックするimageValidation()コードです。

function imageValidation(imageuploadform) {

    var val = $(imageuploadform).find(".fileImage").val();
    switch(val.substring(val.lastIndexOf('.') + 1).toLowerCase()){
        case 'gif':
        case 'jpg': 
        case 'jpeg':
        case 'pjpeg':
        case 'png':
             return true;

        case '':
            $(imageuploadform).find(".fileImage").val();
                     alert("To upload an image, please select an Image File");
            return false;

        default:
             alert("To upload an image, please select a valild file extension.");
             return false;

    }

    return false;

}

startImageUpload関数を表示する必要があるかどうかはわかりませんが、表示する場合は、以下のとおりです。

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;

      return true;
}

フォームを示すコード:

var $fileImage = $("<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='imageClickHandler(this);' class='imageuploadform' >" +

    "Image File: <input name='fileImage' type='file' class='fileImage' /></label><br/><label>" +

    "<input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' /></label>" + 

    "</p><p class='imagef1_cancel' align='center'><label>" +

    "<input type='button' name='cancelImageBtn' class='cancelimage' value='Cancel' /></label>" + 
    "</p></form>");
4

2 に答える 2

1

問題は、フォームの送信イベントにあります。あなたはそれがこのように見えるはずです:

onsubmit="return imageClickHandler(this);"

戻り値に注意してください。それがない場合、imagehandler関数の結果は返されず、送信イベントはキャンセルされません。

また、属性に単一のqoutes(')を実際に使用することは、実際には有効なhtmlではありません。おそらく、それらをダブルqoutesに切り替えてから、javascript文字列のターミネータとしてシングルqoutesを使用する必要があります。このような:

var $fileImage = $('<form action="imageupload.php" method="post" enctype="multipart/form-data" target="upload_target" onsubmit="return imageClickHandler(this);" class="imageuploadform" >' +  
    'Image File: <input name="fileImage" type="file" class="fileImage" /></label><br/><label>' +
    '<input type="submit" name="submitImageBtn" class="sbtnimage" value="Upload" /></label>' +
    '</p><p class="imagef1_cancel" align="center"><label>' +
    '<input type="button" name="cancelImageBtn" class="cancelimage" value="Cancel" /></label>' + 
    '</p></form>');
于 2012-04-14T22:56:28.577 に答える
0

ターゲットのimageuploadformが正しくないようです

IDの場合は$( "#imageuploadform")、クラスの場合は$( "。imageuploadform")である必要があります。

しかし、コーにももっと悪いことがあるようです

于 2012-04-14T21:47:38.280 に答える