2012-04-14 3 views
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>"); 
+0

Действительно ли оно отображает окно предупреждения, а затем загружает изображение в любом случае? – AHM

+0

да, да, у меня есть php-код на другой странице, который выполняет всю загрузку, и он отображает окно предупреждения, когда я нажимаю на поле предупреждения. Проблема в том, что он предупреждает меня, когда расширение файла неверно, но оно все еще загружает файл изображения – user1333290

+0

в порядке, это очень загадочно. Поле предупреждения отображается только при возврате функции false, и когда функция возвращает false, функция sertImageUpload() не вызывается этим кодом. Вы уверены, что ничего больше не происходит, чем код, который вы разместили здесь? – AHM

ответ

1

Проблема заключается в ваших формах события onsubmit. Вы это должно выглядеть следующим образом:

onsubmit="return imageClickHandler(this);" 

Обратите внимание на возвращение. Если этого не существует, результат функции обработчика изображения не возвращается, и событие отправки не отменяется.

Кроме того, на самом деле использование отдельных атрибутов qoutes (') на атрибутах не является действительно действительным html. Вероятно, вы должны переключить их на двойные qoutes, а затем использовать одиночные Qout как терминаторы для строк javascript. Пример:

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>'); 
+0

спасибо что сработало – user1333290

0

Похоже, ваш-мишенью imageuploadform неправильно

это должно быть $ ("# imageuploadform"), если это идентификатор или $ ("imageuploadform."), если это класс

Но, по-видимому, может быть даже больше ошибок с коэффициентом

+0

imageuploadform - это класс для формы.

user1333290

+0

Чтобы настроить таргетинг на классы, вам нужно будет использовать $ (". imageuploadform") – chadpeppers

+0

Если вы посмотрите на последнюю функцию, она содержит следующую строку кода: sourceImageForm = imageuploadform ;. Нужно ли это изменить на sourceImageForm = $ (. Imageuploadform) ;? (sourseImageForm просто просто переменная). Также функция function startImageUpload (imageuploadform) nned для изменения функции startImageUpload (.imageuploadform)? – user1333290

Смежные вопросы