Пиша MVC3 сайт и използвам ненатрапчиво валидиране на JQuery, за да валидирам формулярите си. Създадох рамка на формуляр в рамките на приложението, която показва спретнат малък изскачащ прозорец „помощ“ всеки път, когато щракна върху поле на формуляр. Всичко работи в тази област и съм доволен.
Проблемът е, че нямам много налично недвижимо имущество за съобщенията за валидиране на полетата на формуляра, които се показват до всеки формуляр, и ако ги поставя под полетата на формуляра, преоразмеряването е грозно. Ето как изглежда едно типично поле на формуляр:
Когато щракна върху полето, се показва следното:
И когато настъпи валидиране, се случва следното:
Моето решение е просто да скрия помощния текст, когато настъпи проверка (използвам споделена функция за това, нека я наречем „hideDescriptions()“). Всеки формуляр в сайта използва една и съща рамка, така че искам да мога да извикам hideDescriptions() всеки път, когато се случи ненатрапчивото валидиране, по всяко време.
Моят javascript е разделен на няколко файла, например:
/Review/Create/ - използва createReview.js /Review/Read/ - използва readReview.js
И двете включват също "shared.js". Надявах се да мога да разширя плъгина за ненатрапчиво валидиране на jquery във файла shared.js и да го приложа към всяка форма в сайта наведнъж... но съм малко изгубен. Това е докъдето стигнах:
$("form").validate({
invalidHandler: function (form, validator) {
hideDescriptions();
}
});
Но съм повече от наясно, че това няма да работи. Предполагам, че ненатрапчивият валидатор прикачва валидатора към всички формуляри по подразбиране, като виждам, че не е необходимо да го прикачвам сам?
Има ли начин да разширя ненатрапчивото валидиране, за да извърша общо обратно извикване, ако формулярът не е валиден?