Uncaught TypeError: не удается прочитать свойство 'indexOf' undefined, с помощью proengsoft / laravel-jsvalidation


Uncaught TypeError: не удается прочитать свойство 'indexOf' undefined, с помощью proengsoft / laravel-jsvalidation

09.10.2020 09:30:47 Просмотров 51 Источник

Я использую proengsoft/laravel-jsvalidation, который преобразует запрос проверки laravel в проверку jquery. Но я получаю эту ошибку.

Uncaught TypeError: Cannot read property 'indexOf' of undefined.  Exception occurred when checking element , check the 'laravelValidation' method.
    at Array.<anonymous> (jsvalidation.js:148)
    at Function.each (jquery.min.js:2)
    at $.validator.<anonymous> (jsvalidation.js:146)
    at $.validator.check (jquery.validate.js:798)
    at $.validator.checkForm (jquery.validate.js:475)
    at $.validator.form (jquery.validate.js:462)
    at n.fn.init.valid (jquery.validate.js:127)
    at HTMLButtonElement.<anonymous> (wizard?account=20:1471)
    at HTMLButtonElement.dispatch (jquery.min.js:3)
    at HTMLButtonElement.r.handle (jquery.min.js:3)

Я использую,

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.1/js/bootstrap.min.js"></script>

<script type="text/javascript" src="{{ asset('vendor/jsvalidation/js/jsvalidation.js')}}"></script>
{!! JsValidator::formRequest('App\Http\Requests\MyFormRequest') !!}

Это строка ошибки,

var isArrayRule = param[4].indexOf('[') !== -1;

Полный метод,

$.validator.addMethod("laravelValidation", function (value, element, params) {
            var rules = [],
                arrayRules = [];
            $.each(params, function (i, param) {
                // put Implicit rules in front
                var isArrayRule = param[4].indexOf('[') !== -1;
                if (param[3] || laravelValidation.implicitRules.indexOf(param[0]) !== -1) {
                    isArrayRule ? arrayRules.unshift(param) : rules.unshift(param);
                } else {
                    isArrayRule ? arrayRules.push(param) : rules.push(param);
                }
            });

            // Validate normal rules.
            var localRulesResult = validateLocalRules(this, [value], element, rules);

            // Validate items of the array using array rules.
            var arrayValue = ! Array.isArray(value) ? [value] : value;
            var arrayRulesResult = validateLocalRules(this, arrayValue, element, arrayRules);

            return localRulesResult && arrayRulesResult;
        }, '');

Это называется функцией проверки,

rules: {"child_full_name":{"laravelValidation":[["Required",[],"This field is required",true]]}}

Я понятия не имею, как это происходит. Может ли кто-нибудь дать какую-нибудь подсказку, чтобы отладить это?.

У вопроса есть решение - Посмотреть?

Ответы - Uncaught TypeError: не удается прочитать свойство 'indexOf' undefined, с помощью proengsoft / laravel-jsvalidation / Uncaught TypeError: Cannot read property 'indexOf' of undefined, with proengsoft / laravel-jsvalidation

Является ответом!
vimuth

10.10.2020 06:15:44

После многих попыток выяснилось, что пакет proengsoft / laravel-jsvalidation был обновлен с помощью composer. Версия Laravel должна совпадать с версией пакета laravel-jsvalidation. доступные версии и laraval matrix можно найти здесь.

в моем случае я должен добавить "~3.0"

"proengsoft/laravel-jsvalidation": "~3.0",

вместо того, чтобы сказать в документе "^3.0". (Мой laravel-это 5.8, и в конечном итоге плагин обновился до версии 4 и остановился) Сохраняя этот ответ, так как плагин был очень полезен, если кто-то столкнулся с той же ошибкой.

(Просто если вы нашли ошибку, то, что вам нужно сделать, это изменить строчку в composer.JSON и работать композитор установить команду)

Помочь в развитии проекта:
Закрыть X