Как да задействам валидации от страна на клиента на ASP.NET без изпращане?

Имам уебсайт в ASP.NET (WebForms, НЕ MVC), който има формуляр за проучване, разделен на няколко слайда. Всеки слайд има следващ бутон, който очевидно извършва преход (от страна на клиента, не публикуване обратно или отдалечена заявка) към следващия слайд.

Във всеки слайд имам няколко ASP.NET контроли със свързаните с тях валидатори. Искам тези валидатори да се задействат, когато щракна върху следващия бутон (или може би когато всеки вход загуби фокус?).

Спомних си, че ASP.NET правеше проверка от страна на клиента при изгубен фокус, но може би греша... (Спрях да правя ASP.NET разработка преди около 3 години, така че не мога да си спомня)

Благодаря

АКТУАЛИЗАЦИЯ:

Би било по-добре да накарате ASP.NET да задейства всеки валидатор, когато свързаният контрол загуби фокус. Спомням си, че ASP.NET прави това (или сънувам? =P)


person empz    schedule 17.01.2011    source източник
comment
какви валидатори използвате??   -  person Eric    schedule 17.01.2011
comment
Общи такива. Задължителни валидатори на полета, валидиране на диапазон, някои RegEx... но най-вече задължителни.   -  person empz    schedule 17.01.2011
comment
Ако използвате .val() от jQuery, тогава трябва да извикате и .change(). като $("#thing").val(''); $("#thing").change();   -  person jmbmage    schedule 26.01.2016


Отговори (5)


Първо трябва да се уверите, че всичките ви валидатори имат целеви контроли, посочени с помощта на атрибута „TargetControlID“ на валидаторите.

След това можете да настроите група за валидиране на страница и да посочите името на групата в следващия бутон и в самите контроли.

Ако използвате валидатори на регулярни изрази, можете да ги изберете от този уебсайт

За валидиране от страна на клиента Ако използвате персонализирани валидатори, можете да създадете клиентска функция и да я посочите в персонализирания валидатор, като използвате атрибута ClientValidationFunction и като зададете EnableclientScript = "true" в персонализирания валидатор.

Просто се уверете, че вашата клиентска функция има параметри sender и args.

person Eric    schedule 17.01.2011
comment
Проблемът е, че бутонът „следващ“ всъщност не е бутон, а връзка, която изпълнява някакъв javascript, за да направи преход към следващия слайд. Не включва обратно изпращане, нито отдалечена заявка. - person empz; 17.01.2011
comment
какво ще кажете за използването на onchange() javascript метода? или onblur()? - person Eric; 17.01.2011
comment
бихте използвали тези методи в самото текстово поле. - person Eric; 17.01.2011

Изглежда, че има предоставена JavaScript функция, наречена Page_ClientValidate, който трябва да може да се извиква, за да провери ръчно валидирането от JavaScript. Не съм го използвал обаче, така че YMMV.

person David    schedule 17.01.2011

поставете всичките си валидатори от страна на клиента в една и съща група за валидиране и с бутона „следващ“ добавете същата група за валидиране. Когато щракнете върху бутона, той автоматично ще задейства всички валидатори, преди да извърши обратното публикуване.

що се отнася до ръчното задействане на валидирането... може също да можете да използвате ValidatorOnSubmit(). Спомням си, че направих това в друг проект, но ми е трудно да намеря кода.

person yamspog    schedule 17.01.2011
comment
Проблемът е, че бутонът „следващ“ всъщност не е бутон, а връзка, която изпълнява някакъв javascript, за да направи преход към следващия слайд. Не се включва обратно изпращане, нито отдалечена заявка. - person empz; 17.01.2011

Изглежда, че активирането на „SetFocusOnError“ на всеки валидатор задейства валидирането всеки път, когато се опитам да напусна полето.

person empz    schedule 17.01.2011

Накратко, украсете вашия модел, сега анотациите към данни се поддържат от Asp.Net 4.5 Вижте моя отговор тук..Проверки на уеб формуляри от страна на клиента

person Sundara Prabu    schedule 11.09.2017