Uncaught TypeError : proengsoft / laravel-jsvalidation을 사용하여 정의되지 않은 'indexOf'속성을 읽을 수 없습니다.

Vimuth

laravel 유효성 검사 요청을 jquery 유효성 검사로 변환 하는 proengsoft / laravel-jsvalidation사용하고 있습니다. 하지만이 오류가 발생합니다.

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;
        }, '');

이를 validate 함수라고합니다.

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

나는 이것이 어떻게 일어나는지 전혀 모른다. 누구든지 이것을 디버그하는 단서를 줄 수 있습니까?.

Vimuth

많은 시도 끝에 proengsoft / laravel-jsvalidation 패키지가 composer로 업데이트되었습니다. 라 라벨 버전은 laravel-jsvalidation 패키지 버전 과 일치해야합니다 . 사용 가능한 버전 및 laraval 매트릭스는 여기 에서 찾을 수 있습니다 .

제 경우에는 '~ 3.0' 을 추가해야합니다

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

문서 '^ 3.0' 에서 말하는 대신 . (내 laravel은 5.8이며 결국 플러그인이 버전 4로 업데이트되고 중지되었습니다.) 누군가가 동일한 오류를 만난 경우 플러그인이 매우 유용했기 때문에이 답변을 유지합니다.

(단순히 오류를 발견 한 경우 composer.json의 줄을 변경하고 composer install 명령을 실행하면됩니다.)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관