2017-01-26 1 views
0

Я получаю эту ошибку при попытке проверить форму с помощью плагина проверки jQuery.Максимальный размер стека вызовов превышен в jQuery Validation

Uncaught RangeError: Maximum call stack size exceeded 
    at RegExp.[Symbol.replace] (native) 
    at String.replace (native) 
    at TAG (http://myapp.app/js/app.js:6135:36) 
    at matcherFromTokens (http://myapp.app/js/app.js:6862:44) 
    at Sizzle.compile (http://myapp.app/js/app.js:7016:13) 
    at Sizzle.select (http://myapp.app/js/app.js:7102:16) 
    at Function.Sizzle [as find] (http://myapp.app/js/app.js:5270:9) 
    at jQuery.fn.init.find (http://myapp.app/js/app.js:7301:11) 
    at a.validator.elements (http://myapp.app/js/app.js:41161:47) 
    at a.validator.checkForm (http://myapp.app/js/app.js:41116:76) 
    at a.validator.form (http://myapp.app/js/app.js:41114:21) 
    at HTMLFormElement.<anonymous> (http://myapp.app/js/app.js:41052:105) 

Моя процедура проверки довольно простая ... не знаю, почему это происходит, поскольку все мои другие формы проверяют штраф.

$('#setup-form').validate({ 
    rules: { 
     slim: { 
      required: true, 
     }, 
     role: { 
      required: true, 
     }, 
     gender: { 
      required: true, 
     }, 
     orientation: { 
      required: true, 
     }, 
     ip_address: { 
      required: true, 
     }, 
     about: { 
      required: true, 
      minlength: 20, 
      maxlength: 5000, 
     }, 
     looking: { 
      required: true, 
     }, 
     seeking: { 
      required: true, 
     }, 
     status: { 
      required: true, 
     }, 
     age: { 
      required: true, 
     }, 
     ethnicity: { 
      required: true, 
     }, 
     education: { 
      required: true, 
     }, 
     body: { 
      required: true, 
     }, 
     height: { 
      required: true, 
     }, 
     hair: { 
      required: true, 
     }, 
     eye: { 
      required: true, 
     }, 
     piercing: { 
      required: true, 
     }, 
     tattoo: { 
      required: true, 
     }, 
     smoking: { 
      required: true, 
     }, 
     drinking: { 
      required: true, 
     } 
    }, 

    errorPlacement: function(error, element) { 
     $(element).closest('.form-group').addClass('has-error'); 
    } 
}); 
+0

Поскольку нет ничего неправильного в отношении кода проверки, возможно, также отображается соответствующий HTML-код, поэтому у нас есть шанс воспроизвести эту ошибку. – Sparky

ответ

0

Код внутри errorPlacement функции не совсем верно ...

errorPlacement: function(error, element) { 
    $(element).closest('.form-group').addClass('has-error'); 
} 

errorPlacement функция предназначена только для размещения сообщение элемент ошибки в HTML-разметки; и ваш код просто добавляет класс. Хотя я не уверен, что это может привести к ошибке JavaScript, я уверен, что этот код предупреждает появление сообщений проверки.

Если вы хотите переключать классы, соответствующие проверке, то вы должны использовать функции highlight и unhighlight.

highlight: function(element, errorClass, validClass) { 
    $(element).closest('.form-group').addClass('has-error'); 
}, 
unhighlight: function(element, errorClass, validClass) { 
    $(element).closest('.form-group').removeClass('has-error'); 
} 
Смежные вопросы