jQuery "Проверка не является функцией" - PullRequest
3 голосов
/ 28 июля 2011

Я использую этот плагин проверки jQuery и получаю знаменитый:

$ ("# Form"). Validate не является функцией

при попытке проверки в Firebug (и эквивалентных сообщениях во всех других браузерах).

Это будет означать, что я пытаюсь вызвать его до загрузки jquery-1.4.2.js и jquery.validate.js.Я использовал Fiddler, чтобы показать, что эти файлы запрашиваются до вызова validate(), поэтому в отсутствие лучшего метода я могу только предположить, что эти два файла полностью загружены в браузере.

Где-нибудь еще я должен искать, чтобы решить это?Если сначала запрашиваются сценарии, их также следует загружать в таком порядке?Есть ли способ узнать?

В настоящее время я считаю, что в плагине есть что-то еще, вызывающее это (конфигурация и т. Д.).Я искал повсюду, но ни одно из решений, похоже, не подходит мне.

Есть идеи, где искать?

Мой jQuery:

$(document).ready(function () {
    console.log("loaded");
    $("#Form").validate({
        rules: {
            container_0$centre_0$txtFirstName: { required: true }
        }
    });
})

иФорма:

<form method="post" action="/url" id="Form" enctype="multipart/form-data">

 <div class="ctrlholder">
    <label for="firstname">First Name</label>
    <input name="container_0$centre_0$txtFirstName" type="text" id="txtFirstName" class="required" /><em>*</em>
    <div id="errFirstName" class="error" style="display:none;">Please enter your first name</div>
  </div>
</form>

Существуют упрощенные версии кода.

Ответы [ 3 ]

1 голос
/ 29 июля 2011

Похоже, что jquery.tools.min.js (который выглядит как this ) вызывал проблему.После удаления этого я могу проверить как обычно.

Я бы продолжил расследование, но у меня есть только уменьшенная версия сценария, хотя я рискнул бы предположить, что это потому, что у него есть своя проверка ,Скорее всего, это приведет к перекрытию имени метода.

Это будет отличный ресурс в будущем для этого крайнего случая.

1 голос
/ 28 июля 2011

Я не вижу, чтобы .validate() сам по себе был методом jQuery. Похоже, что это метод плагина проверки. Я бы рекомендовал убедиться, что , что плагин правильно включен / установлен, и при работе с плагинами вы должны убедиться, что вы также используете совместимую версию jQuery.

Вы можете видеть из этого jsFiddle , что у объекта jQuery нет свойства validate с включенным только jQuery.

0 голосов
/ 25 июня 2014

Я положил:

$. validator.setDefaults ({
    submitHandler: function () {alert ('submitted'); } 
}); 

Вместо:

jQuery.validator.setDefaults ({
    debug: true, 
    success: 'valid' 
});

И у меня это сработало.

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