2013-02-20 1 views
1

Проверка jQuery не работает в коде, который я использовал для проверки формы.Почему этот код не показывает ошибки проверки на странице html после нажатия кнопки

Я использовал PureMVC и в файле index.html файл contact.html, загруженный из запроса ajax. Если я делаю яваскрипта предупреждения на кнопку мыши, то я могу видеть их, но они не делают каких-либо проверки на нажатие кнопки

$("#contactUsSubmit").live('click', function() { 

       $("#contactForm").validate({ 
        errorLabelContainer: $("#contactAlert ul"), 
        rules: { 
         contactName: { 
          required: true, 
          minlength: 6 
         } 
        } 
       }); 

      }); 

ли кто-нибудь знает, какие вещи я сделал неправильно в этом коде. #contactname is Id контактаName

+0

Используйте 'на ('нажмите', функция() {})' –

+0

@BasicBridge Я попробовал это, и это не будет работать, потому что форма не на моей странице. Я использую live, потому что puremvc загружает его с другой страницы html. #concept – user1978003

ответ

-1

Я думаю, что это не работает для вас, вероятно, т.к. you must have name elements on your form fields. Глядя на этот пример PUREMVC, он не имеет имен для элементов поля.

EDIT URL вставили ниже как редактор имел проблемы с этим

Там нет причин, почему этот код не будет работать, обратите внимание, вы должны позвонить в силе(), чтобы увидеть какие-либо сообщения об ошибках немедленно.

$("#contactUsSubmit").live('click', function() { 

    $("#contactForm").validate({ 
     errorLabelContainer: $("#contactAlert ul"), 
     rules: { 
      contactName: { 
       required: true, 
       minlength: 6 
      } 
     } 
    }); 
    // call valid to see errors 
    $("#contactForm").valid(); 

}); 

Чистый пример Mvc http://darkstar.puremvc.org/content_header.html?url=http://puremvc.org/pages/demos/TS/PureMVC_TS_Demo_EmployeeAdmin&desc=PureMVC%20TypeScript%20Demo:%20Employee%20Admin

+0

Это может сработать, но зачем инициализировать плагин внутри обработчика кликов? Кроме того, в плагине уже есть обработчик событий щелчка. – Sparky

+1

Согласен, это неправильный способ сделать это. user1978003 Посмотрите на ответ @ Sparky на правильный способ инициализации плагина, но также проверьте, что у вас есть имена на вашем входе и выбирает элементы. –

+0

Это прекрасно работает. – user1978003

0

Значит, функция live('click', (...) называется правильно? JQuery 1.9 удалил функцию .live.

+0

Извините, я использую jquery 1.7.2. как я уже сказал, я вижу javascript, поэтому я уверен, что функция validator вызывается, потому что я также вижу их в console.log, но не вижу их работающих. – user1978003

0

Ваш код:

$("#contactUsSubmit").live('click', function() { 
    $("#contactForm").validate({ 
     //options, 
     ... 
    }); 
}); 

Вы не должны выполнять это так. Вы просто инициализируете плагин при каждом нажатии. Проверка не произойдет до после первый щелчок инициализирует плагин (тогда будет проверен второй клик). Плагин уже имеет встроенный обработчик событий click, и он автоматически записывается.

.validate() следует назвать раз в DOM готов к инициализации плагин.

$(document).ready(function() { 

    $("#contactForm").validate({ 
     //options, 
     rules: { 
      contactName: { 
       required: true, 
       minlength: 6 
      } 
     } 
    }); 

}); 

Обратите внимание, что атрибут name является обязательным для всех входных элементов:

<form id="contactForm"> 
    <input type="text" name="contactName" id="contactName"/> 
    <input id="contactUsSubmit" type="submit" /> 
</form> 

Play с демонстрационной вашей формы: http://jsfiddle.net/FfJCV/