onload функция Javascript return undefined

0

Я вызываю функцию JavaScript, в которой хочу проверить высоту и ширину изображения перед загрузкой. я возвращаюсьfalse значение, но в исходной функции, когда это консольный журнал, он даетundefined .

Для лучшего понимания проверьте код. Код работает нормально, но я хочу получитьtrue а такжеfalse из функций JavaScript.

$(document).on('change', '#userfile', function() {
  var result = ValidateAuthorImage(event, $(this));
  console.log(result);
});

function ValidateAuthorImage(event, obj) {
  var files = event.target.files;
  var valid = true;
  var height = 0;
  var width = 0;
  var _URL = window.URL || window.webkitURL;
  
  for (var i = 0; i < files.length; i++) {
    var img = new Image();
    img.onload = function() {
      height = img.height;
      width = img.width;
      //alert(width + " " + height);
      if (width < 700 || height < 500) {
        $("#msg_upload").html('<span style="color:red;">Please uplaod image with at least width = 700 and height  = 500 </span>');
        obj.value = "";
        return false;
      } else {
        $("#msg_upload").html('');
      }
    }
    img.src = _URL.createObjectURL(files[i]);
  }
}
  • 0
    Пожалуйста, поподробнее
  • 0
    Ваша функция возвращает только false . Однако onload проблема заключается в том, что onload фактически является асинхронным, поэтому вы не можете ничего вернуть из onload во внешнюю область ValidateAuthorImage() . Вам необходимо изменить шаблон, который вы используете для проверки размеров изображения, поскольку то, что вы пытаетесь сделать, невозможно. Я бы предложил проверить изображения и отобразить сообщение / ошибку рядом с изображением, которое не прошло проверку.
Теги:
image width height
CodeFix

2 ответа

0

Я не знаю, есть ли еще код, но ваши возвраты попадают вimage.onload методы, которые даже не вызываются (или вы не указали ту часть, в которой вы его вызываете. Но похоже, что вы можете это сделать

  img.src = _URL.createObjectURL(files[i]);
  return img.onload()
}
Поделиться
Источник
0

Это поможет вам выяснить, что пошло не так.

Поскольку вы ожидаете взамен логического статуса, верните true, если это Okey. вернуть false, если это не ОК. Вы «должны» вернуться с истинным или ложным значением.

return без логического значения (или return по умолчанию) - это то место, где вы получаете логический статус undefined.

Поделиться
Источник

Другие вопросы

  • Состояние редактирования внутри модального окна1 ответ

    Я делаю небольшое приложение для заметок. Когда пользователь пишет свой заголовок и заметку и нажимает «Отправить», заметка помещается на страницу ... Я хочу иметь возможность редактировать заметку. При нажатии кнопки редактирования появляется модальное окно, и я хочу, чтобы заголовок и примечание п...

  • Выберите элемент, необходимый в vuejs, не работает1 ответ

    Я новичок в vuejs. Я хочу сделать элемент выбора из раскрывающегося списка обязательным, я попытался добавить требуемый атрибут, как в приведенном ниже коде. <v-select :items="fournisseursByClient" ...

  • Функция клавиатуры работает только один раз для первой буквы ввода2 ответ

    У меня есть текстовый ввод, где пользователь вводит желаемое имя страницы<input type='text' id='pageName' name='PageName' class='form-control pageName'> Я пытаюсь использовать функцию keyup для запуска Ajax, чтобы проверить, существует ли страница, однако при вводе чего-то вродеindex Ajax от...

  • как добавить ссылки на липкую панель навигации1 ответ

    Я попытался добавить фоновое изображение для своего веб-сайта django, и это вообще не сработало. Я использую этот ответ из stackoverflow, а также ссылку на вопрос stackoverflow. Но это не сработало. А также я переношу изменения в базу данных. добавить фоновое изображение как в методе cssbackground-i...

  • Написание умных средств защиты типов для типов объединения и обобщений1 ответ

    У меня следующая структура:const fragmentTypes = [ 'Word', 'Sentence', ] as const; type FragmentType = typeof fragmentTypes[number]; interface IFragmentData { type: FragmentType; } interface IFragment<T extends IFragmentData> { id: string; type: T['type']; data: Omit&...

  • Калькулятор JS форм1 ответ

    Я сделал этот простой калькулятор своим первым проектом на JS. Я был на одном курсе, где мне сказали, что программисты «ленивы», поэтому они стараются писать как можно меньше кода. И вот мой вопрос. Я думаю, что мой калькулятор действительно долго работает над кодом. Я хотел бы знать, есть ли способ...

  • Как создать html-страницу со ссылкой [закрыто]1 ответ

    Закрыто . Этот вопрос должен быть более конкретным . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он фокусировался только на одной проблеме, отредактировав этот пост . Закрыт в прошлом месяце . Уточните этот вопрос Как разместить видео ключи на моем...

  • как я могу игнорировать переменную длину строки между двумя известными строками при разделении в Javascript?5 ответ

    Я новичок в JavaScript и новичок в программировании в целом, но я стараюсь как можно больше самоучиться. Я пытаюсь извлечь данные из переменной строки. Исходная строка имеет следующий формат:CAMERA NAME(NUM): North West Rd(D1) CAMERA NAME(NUM): Even Longer Camera Name(D2) CAMERA NAME(NUM): C...

  • Как Webix реализует элементы управления скрытым текстом для обеспечения соблюдения правил1 ответ

    Есть скрытыйtext контроль в требовании проекта. Текст присваивается результатомfile upload , но скрытый элемент управления, похоже, не отслеживается правилом правила. Образец выглядит следующим образомApp.form={ elements:[ .... ,{"cols": [ {id: "fil...

  • Компонент экспорта React, который не отображается в PNG1 ответ

    Я пытаюсь экспортировать диаграмму в изображение, и я хочу, чтобы изображение диаграммы имело настраиваемую легенду, которая не отображается на экране. Как я могу это сделать? На данный момент я попытался экспортировать с помощью response-component-export-image, но если компонент не отображается, сс...

CodeFix
Цитата дня

"Завидую тестировщикам: все хотят с ними дружить."

Эндрю Таненбаум