рдЗрдирдкреБрдЯ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреМрдЯрд╛ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рд▓реЗрдЦ
рдкреНрд▓рдЧрдЗрди рдХреА рдЦреЛрдЬ рдореЗрдВ, рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдкрд░ рдЕрдкрдиреА рд░рд╛рдп рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред
рд╣реИрдмрд░рдХреЛрдЯ рдХреЗ рддрд╣рдд рд╡рд┐рд╡рд░рдгред
рджрд┐рдП рдЧрдП:рдПрдХ рдмрдбрд╝рд╛ рд╡реЗрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ, рдЬрд┐рд╕рдореЗрдВ рдпреВрдЖрдИ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП backbone.js, рдЕрдВрдбрд░рд╕реНрдХреЛрд░, jQuery, jQueryUI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдг, рдорд╛рд╕реНрдХ рдФрд░ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб (рдЗрдирдкреБрдЯ, рдЯреЗрдХреНрд╕рд╛рд░рд┐рдпрд╛, рдЖрджрд┐) рдХреЗ рд╕рддреНрдпрд╛рдкрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдХрд┐ рдкреНрд░рдХрд╛рд░ (рдЗрдВрдЯ, рдлреНрд▓реЛрдЯ, рдореВрд▓реНрдп, рдлреЛрди, рдкрд╛рда, рдХреЙрдореНрдмреЛрдмреЙрдХреНрд╕) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдЗрд╕ рдХрд╛рд░реНрдп рдореЗрдВ рдХреБрдЫ рднреА рдкреБрд░рд╛рддрди рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЖрдк рдкреНрд▓рдЧ-рдЗрди рдХреЗ рдПрдХ рдкреВрд░реЗ рд╕рдореБрджреНрд░ рд╕реЗ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ jQuery рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдЖрдкреВрд░реНрддрд┐ рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдмрд╛рдж рдХреЗ рдкреНрд░рдХрд╛рд░ (jQuery DatePicker рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдФрд░ рдПрдХ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ (рдЯрд┐рдиреАрдПрдорд╕реАрдИ) рдХреЛ рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдХрдИ рдФрд░ рдкреНрд░рдХрд╛рд░ рдереЗ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛, рдФрд░ рдпрд╣ рдЗрд╕ рддрдереНрдп рд╕реЗ рдмрд╣реБрдд рджреВрд░ рдерд╛ рдХрд┐ рд╣рдо рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдмрдВрдзрди рдХрд░ рд╕рдХрддреЗ рдереЗред
рдпрд╣рд╛рдБ рдорд╛рдиреНрдпрддрд╛ рдХрд╛ рдкреНрд░рд╢реНрди рдЕрдзрд┐рдХ рддреЗрдЬреА рд╕реЗ рдЙрдард╛ред рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЫрд▓рд╛рдВрдЧ рдФрд░ рд╕реАрдорд╛рдПрдВ рдмрдврд╝реАрдВ, рдФрд░ рдЕрд▓рд╛рд░реНрдо рд╢реБрд░реВ рд╣реБрдЖред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд▓рдЧрд╛рддрд╛рд░ рдЪрд▓рддреЗ-рдЪрд▓рддреЗ рдердХ рдЬрд╛рддреЗ рд╣реИрдВ "рд╣рдордиреЗ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ - рдпрд╣ рдкреНрд▓рдЧ-рдЗрди рдХрд╛ рдорд╛рдирдХ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ," рдпрд╣ рд╣рдорд╛рд░реА рд╕реНрд╡рдпрдВ рдХреА рд╕рддреНрдпрд╛рдкрди рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЦреЛрдЬреЗрдВ:рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рддрдХрдиреАрдХреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдПрдВред
рд╕рдорд╛рдзрд╛рди:рдореЙрдбреНрдпреВрд▓ рдмреИрдХрдмреЛрди.рдЬреЗрдПрд╕ рдореЙрдбрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛ рд╕рддреНрдпрд╛рдкрди рдЬрд╛рдВрдЪ рд╣реИ, рдРрд╕реЗ рдЕрд╡рд╕рд░ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рдирд╛ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд╣реЛрдЧрд╛ред
рдореИрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдкреВрд░реА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдЬреЛ рд▓реЛрдЧ рд░реАрдврд╝ рдХреА рд╣рдбреНрдбреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рдереЗред рдЬреЗрдПрд╕ рдЖрд╕рд╛рдиреА рд╕реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд▓реЗрдВрдЧреЗ рдХрд┐ рдХреМрди рдирд╣реАрдВ рд╣реИ, рдЖрд╕рд╛рдиреА рд╕реЗ рд╣реИрдмреЗ рдкрд░ рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рд▓реЗрдЦ рдвреВрдВрдвреЗрдВред
рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рд╕рд╛рдорд╛рдиреНрдп рджреГрд╢реНрдп рдореЗрдВ, рд╕рддреНрдпрд╛рдкрди () рд╡рд┐рдзрд┐ рдмрдирд╛рдИ рдЧрдИ рдереА, рдЬреЛ рдХреБрдЫ рд╕рддреНрдпрд╛рдкрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд▓реЗрддреА рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрд╕реНрдЯрдо рдореЙрдбреНрдпреВрд▓ Validation.js (рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдпреВрдЯреАрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдмрд╛рдХреА рд╕рд╛рдорд╛рдиреНрдп рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╣реИ) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд╛рд╕ рдХрд░рддреА рд╣реИ, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдореЙрдбрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ :
validate: function (params) { if (_.isArray(params.items) && params.type === 'form') { _.each(params.items, function (item) { new core.utils.Validation(item); }, this); new core.utils.Validation(params); } else { new core.utils.Validation(params); } }
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕рднреА рдХрд╕реНрдЯрдо рджреГрд╢реНрдп рд╕рд╛рдорд╛рдиреНрдп рджреГрд╢реНрдп рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдЙрдирдореЗрдВ рд╕рддреНрдпрд╛рдкрди () рд╡рд┐рдзрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╕рддреНрдпрд╛рдкрди рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ: рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рджреГрд╢реНрдп рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХрд╕реНрдЯрдо рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдзрд┐ рдХреЛ рддреБрд░рдВрдд рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рднреА рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
this.getView('SomeView').render({ 'someParams': someValue, тАж }).validateFields();
рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдзрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:
validateFields: function () { this.validate({ id: "description", type: "text", required: false, maxLength: 500, separate: true }); }
рд╣рдо рдЕрдкрдиреЗ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ
рдЖрдИрдбреА: "рд╡рд┐рд╡рд░рдг" - рдпрд╣ рдЖрдИрдбреА = "рд╡рд┐рд╡рд░рдг" рдХреЗ рд╕рд╛рде рдХреНрд╖реЗрддреНрд░ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ;
рдкреНрд░рдХрд╛рд░: "рдкрд╛рда" - рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░ - рдкрд╛рда (рдпрд╛рдиреА рдЕрдХреНрд╖рд░, рд╕рдВрдЦреНрдпрд╛, рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрди, рдЖрджрд┐ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ);
рдЖрд╡рд╢реНрдпрдХ: рдЧрд▓рдд - рдлрд╝реАрд▓реНрдб рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирд┐рд╡рд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ, рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдбреНрд░рд╛рдЗрд╡ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЯрд╛рдЗрдк рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╛рдиреА рдореБрдЦреМрдЯрд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ);
рдЕрдзрд┐рдХрддрдо рдЧрддрд┐: 500 - рдЕрдзрд┐рдХрддрдо рдкрд╛рда рдХреА рд▓рдВрдмрд╛рдИ 500 рд╡рд░реНрдг рд╣реИ;
рдЕрд▓рдЧ: рд╕рдЪ - рдкрд╛рдБрдЪрд╡реАрдВ рдХреЗ рдмрд╛рдж рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдг рдХреЛ рдЯреНрд░рд┐рдо рдХрд░реЗрдВред
рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реЛрдЧрд╛:
text : function() { $("#"+this.id).live("paste", $.proxy(this.maskPasteText, this)); $("#"+this.id).live("keyup", $.proxy(this.validateText, this)); $("#"+this.id).live("blur", $.proxy(this.finishText, this)); },
рдпрд╣рд╛рдВ рд╣рдо рд╕рддреНрдпрд╛рдкрди рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рдорд╛рд╕реНрдХ рдХреЛ рдкреЗрд╕реНрдЯ, рдХреАрдк, рдзрдмреНрдмрд╛ рдШрдЯрдирд╛рдУрдВ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
maskPasteText: function(event) { var context = this; setTimeout(function() { context.validateText(event); }, 0); },
рдбреЗрдЯрд╛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╣рдо рд╕рдордп-рд╕рдордп рдкрд░ рд╣реИрдВрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рддреНрдпрд╛рдкрди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдмреНрд▓реВрдЯреВрде рдХреЗ рд╕рд╛рде рд╣реА:
finishText: function(event) { this.validateText(event); },
рджрд░рдЕрд╕рд▓, рдпрд╣рд╛рдВ рдкрд╛рда рд╕рддреНрдпрд╛рдкрди рдХрд╛рд░реНрдп рд╕реНрд╡рдпрдВ рд╣реИ:
validateText: function(event) { var value = $("#"+this.id).val(), selectionStart = event.target.selectionStart, selectionEnd = event.target.selectionEnd; if (this.maxLength && this.separate) { value = value.slice(0, this.maxLength); $("#"+this.id).val(value); event.target.selectionStart = selectionStart, event.target.selectionEnd = selectionEnd; } this.bind("error", $.proxy(this.showError, this)); this.validate = this.validations()[this.type]; this.hideError(); this.set({ currentValue: value, required: this.required, errorMessage: this.errorMessage, minLength: this.minLength, maxLength: this.maxLength }); },
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЕрдиреНрдп рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, int, float, рдПрдХ рдЗрдирдкреБрдЯ рдорд╛рд╕реНрдХ рднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП; рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреАрдкрд░ рдИрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рд▓рдЯрдХрд╛рддреЗ рд╣реИрдВ:
maskTypeInt : function (event) { if ( !(event.charCode >= 48 && event.charCode <= 57 || event.charCode === 0) ) { event.preventDefault(); } }, maskTypeFloat : function (event) { var value = $("#"+this.id).val(), dots = value.search(/\./ig), commas = value.search(/,/ig); if ( !( event.charCode >= 48 && event.charCode <= 57 || (event.charCode === 46 && dots === -1) || (event.charCode === 44 && dots === -1 && commas === -1) || event.charCode === 0) ) { event.preventDefault(); } }
рд╕рддреНрдпрд╛рдкрди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирд┐рдореНрди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдкреВрд░реНрдгрд╛рдВрдХ,
рдирд╛рд╡,
рдореВрд▓реНрдп,
рдлреЛрди,
рдкрд╛рда,
рд╢рдмреНрджрдкреНрд░реЛрд╕реЗрд╕рд░ (рдЫреЛрдЯреЗMCE рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП),
рдмрддрд╛ рдЧрдпрд╛,
рдкреНрд░рдкрддреНрд░ (рдпрд╣рд╛рдВ рд╕рддреНрдпрд╛рдкрди рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк рдЖрдЗрдЯрдо рд╕рд░рдгреА рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╣ рдмрдЯрди рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ рдлрд╛рдпрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдмрдЯрди рдЖрдИрдбреА рдкрд╛рд╕ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ)ред
рдЖрдк рдореЙрдбреНрдпреВрд▓ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ
рдпрд╣рд╛рдВ рддреИрдпрд╛рд░
рд╣реИ ред
рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЕрднреА рднреА рдЕрдВрддрд┐рдо рд░реВрдк рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рддрд╛рдХрд┐ рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдл рди рд╣реЛ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрдврд╝рдиреЗ рдореЗрдВ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИред