У меня есть JavaScript, который работает с jQuery.validate. Это берет объект JSON, который возвращается с сервера, и передает его в функцию showErrors
. Объект response.errors
выглядит следующим образом ...
{[
{ item1: "Email", item2: "Invalid format" },
{ item1: "ExpiryDate", item2: "Must be in the future" }
]{
Следующий код ES6 работает нормально ...
for(var i = 0; i < response.errors.length; i++) {
$('form').validate()
.showErrors({ [response.errors[i].item1]: response.errors[i].item2 });
}
Однако я только что обнаружил, что IE не поддерживает ES6, поэтому там это не работает. Я пытался использовать es6-shim (и es-5shim), но это не помогло.
Я пытался написать некоторый ES5-совместимый код, чтобы сделать то же самое, но потерпел неудачу при каждой попытке. Я посмотрел на такие ответы, как этот и этот , но я просто не могу заставить что-либо работать.
Моей последней попыткой было следующее ...
var error = {};
error[response.errors[i].item1] = response.errors[i].item2;
$('form').validate().showErrors(error);
Однако, несмотря на то, что выгрузка error
и предыдущего кода в консоль показала, что они идентичны, при попытке использовать этот код я получаю сообщение об ошибке в консоли ...
Uncaught (в обещании) TypeError: Невозможно прочитать свойство 'type' из неопределенного
в $ .validator.highlight (jquery.validate.js: 344)
в $ .validator.defaultShowErrors (jquery.validate.js: 912)
в $ .validator.showErrors (jquery.validate.js: 546)
at handleServerResponse (Пожертвовать: 305)
В этой строке я звоню showErrors
Кто-нибудь может мне помочь?
Обновление просто чтобы уточнить, причина, по которой я делаю это в цикле, состоит в том, что код на стороне сервера возвращает три типа ошибок, обычные, связанные с конкретным элементом ввода, общие, относящиеся к данные в целом и те, которые относятся к разделу оплаты формы. Я передаю только первый тип jQuery.validate
, так как второй тип отображается в независимой части формы, а третий тип должен обрабатываться по-разному, так как обработчик платежей генерирует свой собственный HTML в iframe
, что означает I должны добавить ошибку вручную.
Второе обновление Оказывается, это был какой-то код в отдельной части страницы, который выбрасывал мой JavaScript. Код, который у меня был, и который показан в двух ответах, был в порядке, это была отдельная проблема.