Ошибка Javascript с плагинами jQuery, когда элемент не найден

#jquery #validation

#jquery #проверка

Вопрос:

Я использую плагин проверки jQuery с WordPress для проверки моей страницы контактов. Я замечаю, что на странице контактов, где есть форма, нет ошибок Javascript в 2 браузерах, которые я тестировал (IE7 и Firefox 4 с Firebug). На другой странице, где загружен скрипт, но нет форм, Firebug сообщает:

jQuery («форма»).validate не является функцией

IE7 сообщает, что страница также содержит ошибки.

Это все, что у меня есть на данный момент:

 jQuery(document).ready(function () {
    jQuery("form").validate({
        rules: {
            contactName: "required",
            email: {
                required: true,
                email: true
            },
            message: "required"
        },
        messages: {
            name: "A valid name is required.",
            email: "A valid email address is required.",
            message: "A message is required."
        },
        errorPlacement: function(error, element) {
            error.insertAfter( element.siblings("label") );
        }
    });
});
  

Я пытаюсь собрать все плагины jQuery вместе в одном файле вместо того, чтобы разделять их и загружать по отдельности. Почему это вызывает ошибку? Я даже пытался заменить «форму» на «#контакт».

Комментарии:

1. Можете ли вы дать нам ссылку на эту страницу? Я предполагаю, что вы загружаете плагины асинхронно, поэтому .ready() срабатывает до загрузки плагина validate.

Ответ №1:

Вы можете изменить проверку, чтобы сначала проверить существование элемента. Что-то вроде:

 var $form = jQuery("form");
if ($form.length) {
  $form.validate({
    // your code
  });
}