Получение «Uncaught SyntaxError: неверный или неожиданный токен» в JavaScript - PullRequest
0 голосов
/ 17 ноября 2018

Я получаю эту ошибку на своем веб-сайте при использовании формы бронирования.

Uncaught SyntaxError: неверный или неожиданный токен в Function.Date.createNewFormat (jquery.stmdatetimepicker.js? ver = 4.2.7: 1857) at Date.dateFormat (jquery.stmdatetimepicker.js? ver = 4.2.7: 1857) в XDSoft_datetime._this.str (jquery.stmdatetimepicker.js? ver = 4.2.7: 1196) на HTMLDivElement. (Jquery.stmdatetimepicker.js вер = 4.2.7:? 1549 г.) в HTMLDivElement.dispatch (jquery.js? ver = 1.12.4: 3) в HTMLDivElement.r.handle (jquery.js? ver = 1.12.4: 3)

Это ссылка: mantovacar.com / wp-content / themes / motors / assets / js / jquery.stmdatetimepicker.js? Ver = 4.2.7

1 Ответ

0 голосов
/ 18 ноября 2018

Я сделал отладку, и это ваша проблема: var dateTimeFormat = 'j F Y G \h i \m\i\n';

Возможно, вы захотите заменить \n хотя бы на n, но весь этот формат мне кажется недействительным.

Проблема возникла из-за того, что плагин создает код как sting из формата, а затем вызывает eval(), что, очевидно, является плохой практикой. И когда вы передаете \n как часть вашего формата, он преобразуется в (разрыв строки). И это повреждает код, так как он находится в строке, например:

Date.prototype.format2 = function() { ... + '
';}

Я бы порекомендовал вам использовать обновленную версию этой библиотеки (возможно, они исправили ее): https://xdsoft.net/jqplugins/datetimepicker/

И рассмотрите возможность перехода на более распространенный формат даты, например Y/m/d H:i.

Я не смог найти документацию по форматированию для вашего плагина, поэтому вы можете по крайней мере проверить источник, чтобы увидеть все доступные буквы, которые вы можете использовать в вашем dateTimeFormat:

Date.getFormatCode = function(a) {
    switch (a) {
    case "d":
        return "String.leftPad(this.getDate(), 2, '0') + ";
    case "D":
        return "Date.dayNames[this.getDay()].substring(0, 3) + ";
    case "j":
        return "this.getDate() + ";
    case "l":
        return "Date.dayNames[this.getDay()] + ";
    case "S":
        return "this.getSuffix() + ";
    case "w":
        return "this.getDay() + ";
    case "z":
        return "this.getDayOfYear() + ";
    case "W":
        return "this.getWeekOfYear() + ";
    case "F":
        return "Date.monthNames[this.getMonth()] + ";
    case "m":
        return "String.leftPad(this.getMonth() + 1, 2, '0') + ";
    case "M":
        return "Date.monthNames[this.getMonth()].substring(0, 3) + ";
    case "n":
        return "(this.getMonth() + 1) + ";
    case "t":
        return "this.getDaysInMonth() + ";
    case "L":
        return "(this.isLeapYear() ? 1 : 0) + ";
    case "Y":
        return "this.getFullYear() + ";
    case "y":
        return "('' + this.getFullYear()).substring(2, 4) + ";
    case "a":
        return "(this.getHours() < 12 ? 'am' : 'pm') + ";
    case "A":
        return "(this.getHours() < 12 ? 'AM' : 'PM') + ";
    case "g":
        return "((this.getHours() %12) ? this.getHours() % 12 : 12) + ";
    case "G":
        return "this.getHours() + ";
    case "h":
        return "String.leftPad((this.getHours() %12) ? this.getHours() % 12 : 12, 2, '0') + ";
    case "H":
        return "String.leftPad(this.getHours(), 2, '0') + ";
    case "i":
        return "String.leftPad(this.getMinutes(), 2, '0') + ";
    case "s":
        return "String.leftPad(this.getSeconds(), 2, '0') + ";
    case "O":
        return "this.getGMTOffset() + ";
    case "T":
        return "this.getTimezone() + ";
    case "Z":
        return "(this.getTimezoneOffset() * -60) + ";
    default:
        return "'" + String.escape(a) + "' + ";
    }
}

Кроме того, похоже, что у вас есть некоторые проблемы с кодировкой вашего js-файла, вы должны проверить это и переключиться на UTF-8, вероятно. Но это выходит за рамки вопроса.

А пока просто измените переменную dateTimeFormat на странице индекса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...