Ответ 1
Эта ошибка произошла, потому что у меня был другой элемент html с тем же идентификатором. После удаления этого кода кода работал нормально.
Вот html-код для формы:
<form method="post" id="login" action="/login">
<div class="login-element">
<label for="email">E-Mail</label>
<input type="text" name="email">
</div>
<div class="login-element">
<label for="password">Passwort</label>
<input type="password" name="password">
</div>
<div class="login-element">
<input type="submit" value="Login">
</div>
</form>
и вот код, который я использовал для проверки:
$(document).ready(function() {
$("#login").validate({
debug: true,
rules: {
email: {
required: true,
email: true
},
password: {
required: true
}
},
messages: {
email: {
required: "Please enter a email adress",
email: "Please enter a valid email address"
},
password:"Please enter password"
}
});
});
В консоли регистрируется следующая ошибка:
TypeError: validator is undefined
...or.settings[eventType] && validator.settings[eventType].call(validator, this[0],...
В чем может быть проблема?
Эта ошибка произошла, потому что у меня был другой элемент html с тем же идентификатором. После удаления этого кода кода работал нормально.
Вам нужно включить проверку script в начало вашего документа.
Вот так:
<script src="/js/libs/jquery.validate.js" type="text/javascript"></script>
Кроме того, проверьте в отображаемом HTML, что ваш идентификатор формы верен.
Я использую этот код для вызова проверки на своих сайтах
//Validate Form
var ids = [];
$("form").each(function () {
ids.push(this.id);
});
var formId = "#" + ids[0]
$(formId).validate();
Для тех, кто все еще ищет ответ, а ответы выше не работают.
Я провел последние 3 часа, пытаясь решить все проблемы, и никто из них не работал.
Наконец-то я поняла очень тупую ошибку, я дважды инициализировал JQuery в своем приложении
один раз в голове, где я включил 3 скрипта
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
и еще раз в конце страницы, где у меня была строка.
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
Это сбросило функцию валидатора в $и заставило все сломаться.
Некоторые вещи для проверки случаев, когда проверки не срабатывают.
Является ли script в правильном порядке? jquery, за которым следует проверка, а затем ненавязчивый.
Определяется ли функция $.validator? Проверьте быстро в консоли браузера
Является ли динамически создаваемая форма? Если это так, вам может потребоваться повторная инициализация плагина проверки правильности формы, лучший способ, который я нашел из этого, упомянуты ниже, выберите тот, который подходит для вас.
$.validator.unobstrusive.parse('#myForm')
или
$('#myForm').validate() // this just makes the validator plugin consider the form for unobstrusive validation
или
$('#myForm').valid() // this will trigger unobstrusive validation on the form.
Надеюсь, что это поможет.
Тот же вопрос появился для меня. Причина этой ошибки в том, что я использовал код:
if ($("#invalidFormId").valid()) {
....
}
И элемент id
элемента form
недействителен
В моем случае возникла проблема с двумя экземплярами JQuery UI я JQuery. Это привело к тому, что обычный код JQuery работает нормально, но удаляет intance $.validator.
В моем случае ошибка состояла в том, что валидатор вызывался слишком рано. Я переместил код в отдельную функцию и вызвал его с помощью метода задержки underscore.js. Работали как шарм.
_.delay(doValidations);
function doValidations() {
...
});
У меня было @Scripts.Render("~/bundles/jquery")
в родительском представлении (_Layout.cshtml) и также определил некоторые другие теги jQuery Script в другом представлении, они столкнулись.
Поскольку это первая тема, которую Google показывает, что "валидатор - это undefined", тогда я опишу свою проблему, возможно, кто-то найдет ее полезной.
Я использовал атрибут maxlength (ничего необычного), и я получил эту ошибку. Причиной были вложенные формы. Одно из текстовых областей было внутри обеих форм. Может произойти, если у вас есть модалы (диалоги) с формами в основном представлении.
Плагин поставляется в отдельных библиотеках, вам нужно включить их в свой html.
<script src="../jquery-validation/dist/jquery-validate.min.js"></script>
<script src="../jquery-validation/dist/additional-methods.min.js"></script>
То же самое произошло здесь. Для меня это была опечатка в моем коде:
$(document).ready(function(){
//START of validate
$('#reply').validate({
rules:{
message:{
required: true,
},
},
submitHandler: function(form) {
var data = $("#reply").serialize();
$.ajax({
type:"POST",
url:"ajax/scripts/msg_crt.php",
data:data,
success:function(data){
alert("Loaded");
}
});
}
});
//END of validate
});
$(document).on('click','#send', function(){
if($('#replay').valid()){// <--- Here is my selector typo
$("#replay").submit(); // <--- Here is my selector typo
}
return false;
});