ASP.Net MVC рдореЗрдВ рд╡рд┐рдиреАрдд jQuery рдХреЗ рдорд╛рдиреНрдп рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдп

рдпрд╣ ASP.Net MVC рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЕрдВрдбрд░рд╕реНрдЯреИрдВрдбрд┐рдВрдЧ рд╡рд┐рдиреАрдд рдорд╛рдиреНрдпрддрд╛ рдХрд╛ рднрд╛рдЧ 3 рд╣реИред

1. рдЕрдВрджрд░ jQuery рдХреЗ рдорд╛рдиреНрдп рдкреНрд▓рдЧрдЗрди рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
2. ASP.Net MVC рдореЗрдВ рд╡рд┐рдиреАрдд рд╕рддреНрдпрд╛рдкрди рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди HTML рдХреЛрдб рдХреЛ рд╕рдордЭрдирд╛
3. ASP.Net MVC рдореЗрдВ рд╡рд┐рдиреАрдд jQuery рдХреЗ рдорд╛рдиреНрдп рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░реНрдпред

рд╣рдо рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдХреНрдпрд╛ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ:


рдкрд╛рд░реНрд╕ рд╡рд┐рдзрд┐


рд╣рдо рд╡рд┐рдиреАрдд рд╕рддреНрдпрд╛рдкрди рдЪрдХреНрд░ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХреА рднреВрдорд┐рдХрд╛ рдХреЛ рд╕рдордЭрддрд╛ рд╣реИред
рдЕрдЧрд░ рд╣рдо jquery.validate.unobtrusive.js рдХреЗ рдЕрдВрдд рдХреЛ рджреЗрдЦреЗрдВ рддреЛ рд╣рдо рдкрд╛рддреЗ рд╣реИрдВ

$(function () { $jQval.unobtrusive.parse(document); }); 

рддреЛ, рд╣рдо "рдкрд╛рд░реНрд╕ ()" рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ "рджрд╕реНрддрд╛рд╡реЗрдЬрд╝" рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ
рдкрд╛рд░реНрд╕ () рд╡рд┐рдзрд┐ рдХреНрдпрд╛ рд╣реИ?
 { parse: function (selector) { /// <summary> /// Parses all the HTML elements in the specified selector. It looks for input elements decorated /// with the [data-val=true] attribute value and enables validation according to the data-val-* /// attribute values. /// </summary> ///Any valid jQuery selector. $(selector).find(":input[data-val=true]").each(function () { $jQval.unobtrusive.parseElement(this, true); }); var $forms = $(selector) .parents("form") .andSelf() .add($(selector).find("form")) .filter("form"); $forms.each(function () { var info = validationInfo(this); if (info) { info.attachValidation(); } }); } } 

рдкрд╛рд░реНрд╕ () рд╡рд┐рдзрд┐ рдХреЗ рджреЛ рдЦрдВрдб рд╣реИрдВ

1. рдЕрдиреБрднрд╛рдЧ "рдкрд╛рд░реЗрд╕реАрдХрд░рдг"

рдкрд╛рд░реНрд╕рдореЗрдВрдЯ (рддрддреНрд╡, рд╕реНрдХрд┐рдкрдЕрдЯреИрдЪ)

 $(selector).find(":input[data-val=true]").each(function () { $jQval.unobtrusive.parseElement(this, true); }); 

рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЪрдпрдирдХрд░реНрддрд╛ рдХреЗ рдЕрдВрджрд░ "рдбреЗрдЯрд╛-рд╡реИрд▓ = рд╕рдЪ" рд╡рд╛рд▓реЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реВрдк рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдо рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ "рджрд╕реНрддрд╛рд╡реЗрдЬрд╝" рд╣реИ)
рддрдм рд╣рдо "parseElement ()" рдХрд╣рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЙрд╕ рддрддреНрд╡ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ "SkipAttach" рдХреЗ рд▓рд┐рдП "рд╕рд╣реА" рд╣реИред

SkipAttach рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛

рдпрд╣ рд╕рд╡рд╛рд▓ рдЙрда рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо тАЬрд╕реНрдХрд┐рдкрдЕрдЯреИрдЪтАЭ рдореЗрдВ рд╕рд╣реА рдФрд░ рдЧрд▓рдд рдХреНрдпреЛрдВ рди рд╣реЛрдВред

"SkipAttach" рдлреЙрд░реНрдо рдкрд░ рд╡реИрдз () рдХреЙрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдзреНрд╡рдЬ рд╣реИред
рдпрджрд┐ рд╣рдо "рдЭреВрдареЗ" рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рддреНрдпрд╛рдкрди рдирд┐рдпрдо рдЙрд╕ рддрддреНрд╡ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ "рд╡реИрдз" рд╡рд┐рдзрд┐ рдХреЛ рддреБрд░рдВрдд рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдиреАрдд рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдпрджрд┐ рдХреЛрдИ рдЕрдиреНрдп рддрддреНрд╡ рд╣реИ рдЬреЛ рд╡реЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ) рдкрд╛рд░реНрд╕)ред
рд╣рдо рдпрд╣ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдкреНрд░рдкрддреНрд░ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рд╕рдВрд▓рдЧреНрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░, рдЬрдм рд╕рднреА рдирд┐рдпрдо рд╕рдВрд▓рдЧреНрди рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо "рдкрд╛рд░реНрд╕" рд╡рд┐рдзрд┐ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рдореБрдЦреНрдп рдПрдХ "рд╡реЗрд▓рд┐рдбреЗрдЯ ()" рдХрд╣реЗрдВрдЧреЗред

рдХрд┐рди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣рдореЗрдВ "рд╕реНрдХрд┐рдк" рдХреЛ "рд╕реНрдХрд┐рдк" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдпрджрд┐ рд╣рдо рдПрдХ рдбрд╛рдпрдирд╛рдорд┐рдХ рддрддреНрд╡ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдорд╛рдиреНрдп рдХрд┐рдП рдЧрдП рдлреЙрд░реНрдо рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдлреЙрд░реНрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рдорд╛рдиреНрдп рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд╕рд╣реА" рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рд╣рдо рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдбрд╛рдпрдирд╛рдорд┐рдХ рдПрд▓рд┐рдореЗрдВрдЯ рд╕рддреНрдпрд╛рдкрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ)

рдкрд░рд╕реЗрдкреНрд╢рди рдХреНрд▓реАрдпрд░реЗрдВрд╕

рдЕрд╕рд▓ рдореЗрдВ, parseElement () рдлрд╝рдВрдХреНрд╢рди рджреЛ рдЪреАрдЬреЗрдВ рдХрд░рддрд╛ рд╣реИ:

1. рдЬрдм рдлреЙрд░реНрдо рдПрд▓рд┐рдореЗрдВрдЯ рдХреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЗрд╕ рдлреЙрд░реНрдо рдореЗрдВ рдкрд╣рд▓реЗ рдХреЛрдИ рдПрд▓рд┐рдореЗрдВрдЯ рдирд╣реАрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ), рдлрдВрдХреНрд╢рди рдСрдкреНрд╢рдиреНрд╕ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ "рд╡реИрд▓рд┐рдбреЗрдЯ ()" рдореЗрдердб рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд┐рдХрд▓реНрдк jquery.unobtrusive рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЕрд▓рдЧ рдлрд╝рдВрдХреНрд╢рди "рдПрд░рд░рдкреНрд▓рд╕рдореЗрдВрдЯ", рдПрдХ рдЕрд▓рдЧ "рдПрд░рд░рдХреНрд▓рд╛рд╕" рдФрд░ рдирд┐рдпрдореЛрдВ рдХреЗ рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдиреЛрдЯ: рдпрд╣ рд╕рдм рдкреНрд░рд╛рдЗрд╡реЗрдЯ рдореЗрдердб "validationInfo (рдлреЙрд░реНрдо)) рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ" parseElement "рдХреЗ рдмрд┐рдирд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдЗрд╕реЗ 1 рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд╕ рдЙрд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдЗрд╕рдореЗрдВ рдбреЗрдЯрд╛ / рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
2. рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП, рдЬрдм рд╣рдо "parseElement" рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЙрди рдирд┐рдпрдореЛрдВ рдХреЛ рд╕рдордЭрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рддрддреНрд╡ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ ("рдбреЗрдЯрд╛- *") рдПрдбреЗрдкреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП (рдПрдбрд╛рдкреНрдЯрд░реНрд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдПрдХ рдЖрдЗрдЯрдо рдпрд╣ рд╕рдордЭрд╛рддрд╛ рд╣реИ), рдФрд░ рдлрд┐рд░ рдЕрдиреБрд╡рд╛рдж рдФрд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдкрд╣рд▓реЗ рдХреЙрд▓ рдкрд░ рдмрдирд╛рдП рдЧрдП рдирд┐рдпрдореЛрдВ рдХреА рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВред
рдиреЛрдЯ: рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк parseElement рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо $ .data ("рд╡рд┐рдиреАрдд рд╡рд┐рдЪрд▓рди") рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝реЙрд░реНрдо рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХреЙрд▓ рдПрдХ рд╣реА рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

2. рдзрд╛рд░рд╛ "рдорд╛рдиреНрдп рдХрд░реЗрдВ"

 var $forms = $(selector) .parents("form") .andSelf() .add($(selector).find("form")) .filter("form"); $forms.each(function () { var info = validationInfo(this); if (info) { info.attachValidation(); } }); 


рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╡рд┐рд╡рд░рдг "validateInfo"

рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ "validateInfo ()" рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдХреЙрд▓ "рд╡реИрд▓рд┐рдбреЗрдЯ ()" рд╡рд┐рдзрд┐ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИред рд╡рд┐рдХрд▓реНрдк jquery.unobtrusive рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЕрд▓рдЧ рдлрд╝рдВрдХреНрд╢рди "рдПрд░рд░рдкреНрд▓реЗрд╕рдореЗрдВрдЯ" рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдЕрд▓рдЧ "рдПрд░рд░рдХреНрд▓рд╛рд╕" рдФрд░ рдирд┐рдпрдореЛрдВ рдХрд╛ рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреАред
рдпрд╣рд╛рдВ рд╣рдо рдкреЗрдЬ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП "validateInfo ()" рднреА рдХрд╣рддреЗ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░, рдЗрд╕ рдЬрдЧрд╣ рдореЗрдВ "valaidateInfo" рдХрд╣рддреЗ рд╣реИрдВ, рд╣рдо рдХреЗрд╡рд▓ рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдлреЙрд░реНрдо рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ, рдЬреЛ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рднрд░рд╛ рд╣реБрдЖ рдерд╛ред рдпрд╣реА рд╣реИ, рд╣рдо рдЗрд╕реЗ рдПрдХ рдЧрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдлрд┐рд░ рд╣рдо "рдЕрдЯреИрдЪрдб рд╡реЗрд▓рд┐рдбреЗрд╢рди ()" рдХрд╣рддреЗ рд╣реИрдВ, рдЬреЛ "рд╡реЗрд▓рд┐рдбреЗрдЯ ()" рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕реЗ "рд╡реЗрд▓рд┐рдбреЗрд╢рдирдЗрдиреНрдлреЛ () (" рдХреЙрд▓) рдХреЗ рд╕рд╛рде рдЖрдмрд╛рдж рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
 data_validation = "unobtrusiveValidation"; function validationInfo(form) { var $form = $(form), result = $form.data(data_validation), onResetProxy = $.proxy(onReset, form); if (!result) { result = { options: { // options structure passed to jQuery Validate's validate() method errorClass: "input-validation-error", errorElement: "span", errorPlacement: $.proxy(onError, form), invalidHandler: $.proxy(onErrors, form), messages: {}, rules: {}, success: $.proxy(onSuccess, form) }, attachValidation: function () { $form .unbind("reset." + data_validation, onResetProxy) .bind("reset." + data_validation, onResetProxy) .validate(this.options); }, validate: function () { // a validation function that is called by unobtrusive Ajax $form.validate(); return $form.valid(); } }; $form.data(data_validation, result); } return result; } 

рдкрд╣рд▓реЗ, рд╣рдо рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдордиреЗ $ form.data ("unobtrusiveValid") рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлреЙрд░реНрдо рдкрд░ рдкрд╣рд▓реЗ рд╣реА рдХреЙрд▓ рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдлреЛрди рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдо рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред

рд╡рд╛рдкрд╕реА рд╡рд╕реНрддреБ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ред

рдпрджрд┐ рдпрд╣ "validationInfo ()" рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд╣рд▓рд╛ рдХреЙрд▓ рд╣реИ, рддреЛ рд╣рдо рдПрдХ рдкрд░рд┐рдгрд╛рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ $ .data () рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝реЙрд░реНрдо рдкрд░ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВред рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ 3 рднрд╛рдЧ рд╣реИрдВ:


рдПрдбреЗрдкреНрдЯрд░



рдЬрдм рдореИрдВрдиреЗ "рдкрд╛рд░рд╕реЗрдореЗрдВрдЯ ()" рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА, рддреЛ рдореИрдВрдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рд╡рд┐рд╖рдп рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдкрд░реНрдпрд╛рдкреНрдд рдЬрдЯрд┐рд▓ рд╣реИрдВ рдХрд┐ рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдк-рд╡рд┐рд╖рдп рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд╕рдХреЗрдВред
рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдХреИрд╕реЗ рд╡рд┐рдиреАрдд рд╕рддреНрдпрд╛рдкрди рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ Html рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╕рд╛рдорд╛рдиреНрдп jquery.validate рдореЗрдВ рд╡реИрдпрдХреНрддрд┐рдХ рд╕рддреНрдпрд╛рдкрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдХреИрд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдбреЗрдкреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рджреЛ рднрд╛рдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рддреЛ рдПрдбрд╛рдкреНрдЯрд░реНрд╕ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ?
рдПрдбреЗрдкреНрдЯрд░ Html тАЬdata- *тАЭ рдХреЛ рдирд┐рдпрдорд┐рдд jquery.validate рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рдиреАрдд рд╕рддреНрдпрд╛рдкрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЕрд▓рдЧ рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдбрд╛рдкреНрдЯрд░ рднреА рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдПрдбреЗрдкреНрдЯрд░ рд╕рдВрдЧреНрд░рд╣ $ .validator.unobtrusive.adapters рдореЗрдВ рд╣реИред рдПрдбреЗрдкреНрдЯрд░ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╕рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдПрдбреЗрдкреНрдЯрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ jquery.unobstrusive рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред
рдЗрд╕рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдПрдбреЗрдкреНрдЯрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП 4 рд╡рд┐рдзрд┐рдпрд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо рдмрд╛рдж рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗред

Piccy.info - рдлреНрд░реА рдЗрдореЗрдЬ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ

рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рд╡рд┐рдзрд┐:
jQuery.validator.unwellrusive.adapters.add (рдПрдбреЙрдкреНрдЯрд░рдирд╛рдо, [рдкрд░рдо], fn)

рд╣рдо рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ $ .ajax рд╡рд┐рдзрд┐ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдиреНрдп рддреАрди рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐рдпрд╛рдБ рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред

рдЖрдЗрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ:

рдПрдХ рдЙрджрд╛рд╣рд░рдг:
рдПрдЪрдЯреАрдПрдордПрд▓
 <input id="val" type="text" name="val" data-val="true" data-val-between="Must be in the right range" data-val-between-min="5" data-val-between-max="30" /> 

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ
 //The adapter jQuery.validator.unobtrusive.adapters.add( 'between', ['min' ,'max'], function (options) { options.rules['between'] = { min: options.params.min, max: options.params.max }; options.messages['between'] = options.message; } ); //The validation method jQuery.validator.addMethod("between", function (value, element, params) { params.min == 5; //true params.max == 30; //true }); 


рдЕрдиреНрдп рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛:

addBool
addSingleVal
addMinMax

рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рдмрддрд╛рдП рдЧрдП рддрд░реАрдХреЗ () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдПрдбреЗрдкреНрдЯрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВ рддреЛ рд╡реЗ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИрдВред
рдЖрдк рдмреНрд░реИрдб рд╡рд┐рд▓реНрд╕рди рдХреЗ рд▓реЗрдЦ, "ASP.NET MVC 3 рдореЗрдВ рд╡рд┐рдиреАрдд рдЧреНрд░рд╛рд╣рдХ рд╕рддреНрдпрд╛рдкрди" рдХреЛ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ , рдЬрд╣рд╛рдВ рд╡рд╣ рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рд╡рд┐рд╖рдп рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рддреЗ рд╣реИрдВред

рдирджреАрдо рдЦреЗрдбреНрд░ рдХреИрд╕реЗ рд╡рд┐рд╕реНрдордпрдХрд╛рд░реА jQuery рдХреЗ рдорд╛рдиреНрдп рдкреНрд▓рдЧрдЗрди Asp.net MVC рдЕрдиреБрд╡рд╛рдж рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдЕрджреНрдпрддрди: рдПрдбреЗрдкреНрдЯрд░ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рддрд╕реНрд╡реАрд░ рдФрд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЕрдиреНрдп рдкрджреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛

Source: https://habr.com/ru/post/In181758/


All Articles