рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рддреНрдпрд╛рдкрди рдЙрджрд╛рд╣рд░рдгред
CoffeeScript рд╕реБрдЦрдж рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдп рднреА рдЗрд╕рдХреЗ рд╕рд╛рде рдЬрд▓реНрджреА рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкрдардиреАрдп рдХреЛрдб рдирд┐рдХрд▓рд╛ рдЬреЛ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИред
рдирд┐рдореНрди рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рд╕рддреНрдпрд╛рдкрди рд╡рд░реНрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рддрд░реАрдХреЗ jQuery рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
class validation find: (rules, rule) -> rules = rules.split '|' (rule in rules) validate: (rules) -> $('.form_error').remove() delete @errors_list @fields = {} @data = {} for field, rule of rules @fields[field] = $("input[name=\"
рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдкрдиреЗ рджрдо рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЦреЛрдЬ рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдХреЛрдбрдиреИрдЬрд┐рдЯрд░ рдХреА рднрд╛рд╡рдирд╛ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рд╕рддреНрдпрд╛рдкрди рдирд┐рдпрдореЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рдпрдо рдЦреЛрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рдЬрд╣рд╛рдВ CI рдиреЗ рдПрдХ рдмреИрдХрдПрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛, рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдЖрд╕рд╛рди рдерд╛ рдХрд┐ рдореИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реАрдзреЗ рдирд┐рд░реНрдпрд╛рдд рдХрд░реВрдВред
рдорд╛рдиреНрдп рд╡рд┐рдзрд┐, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдкрддреНрд░ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рдФрд░ рдирд┐рдпрдореЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ, рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдЧреА рдФрд░ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдЧреАред рдпрджрд┐ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╡рд┐рдзрд┐ рд╕реНрд╡рдЪреНрдЫ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╕реНрддреБ рд▓реМрдЯрд╛рдПрдЧреАред рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рдзрд┐ рднрд╛рдИ рдХреЛ show_errors () рдХрд╣реЗрдЧреА рдФрд░ рдЭреВрдареА рд▓реМрдЯреЗрдЧреАред рдбреЗрдЯрд╛ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╡рд░реНрдЧ рдЧреБрдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╡реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдФрд░ рдЙрд╕реА рдХрд╛рд░рдг рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рд╛рдл рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Show_errors рдкрджреНрдзрддрд┐ рдлрд╝реЙрд░реНрдо рдлрд╝реАрд▓реНрдб рдХреЗ рдмрдЧрд▓ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдбрд╛рд▓реЗрдЧреА, рдФрд░ рддреНрд░реБрдЯрд┐ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдлрд╝реЛрдХрд╕ (рдХрд░реНрд╕рд░) рд╕реЗрдЯ рдХрд░реЗрдЧреАред рдЗрд╕рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддреБрд░рдВрдд рдЧрд▓рдд рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдорд╛рдЙрд╕ рдХреЗ рд▓рд┐рдП рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд▓реИрдВрдЧ рд╡рд┐рдзрд┐ рдПрдХ рдЙрдкрдпреБрдХреНрдд рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧреА, рдЗрд╕рдореЗрдВ рдирд┐рдпрдо рд╕реЗ рдорд╛рди рдбрд╛рд▓реЗрдВ, рдпрджрд┐ рдХреЛрдИ рд╣реЛ, рдФрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рдПрдВред
рдирд┐рдпрдо_рд╡рд╛рдпреБ рд╡рд┐рдзрд┐ рдирд┐рдпрдо рд╕реЗ рдорд╛рди рд▓реМрдЯрд╛рдПрдЧреАред рд╡реНрд╣рд┐рдк рдЕрдк, рд╢рд╛рдпрдж рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдВрджрд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдордп рдФрд░ рд╕рдордЭ рд╣реИ, рддреЛ рдкреАрдПрдо рдпрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВ, рд╣рдо рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВрдЧреЗред
рдЗрд╕реА рдирд┐рдпрдо рдХреЗ рд╕рд╛рде рддрд░реАрдХреЗ min_length, max_length, valid_email, рдЖрд╡рд╢реНрдпрдХ, min_value, max_value, рдиреНрдпреВрдореЗрд░рд┐рдХ рдФрд░ рдЕрд▓реНрдлрд╛_рдиреНрдпреВрдореЗрд░рд┐рдХ рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рддрд░реАрдХреЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдВ, рд╕рддреНрдпрд╛рдкрди рди рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рдХреЛ рдорд╛рдиреНрдп рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рд╕рд╛рдл рднреА рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдХреЛрдб рдореЗрдВ, рдЯреНрд░рд┐рдо рдФрд░ рдкреВрд░реНрдгрд╛рдВрдХ рд╡рд┐рдзрд┐рдпрд╛рдБ рдРрд╕рд╛ рдХрд░рддреА рд╣реИрдВред
рдкреНрд░рд╛рдердорд┐рдХ parse_rules рд╡рд┐рдзрд┐ рдПрдХ рдирд┐рдпрдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ CodeIgniter рдХреА рднрд╛рд╡рдирд╛ рдореЗрдВ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреА рд╣реИред
Validate_field рд╡рд┐рдзрд┐ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдирд╛рдо, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рдирд┐рдпрдореЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ, рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрдкрд╛рд▓рди рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рдЬрд╛рдВрдЪ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдмрд╛рдж рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд░рдЦрддреА рд╣реИред
Set_error рдкрджреНрдзрддрд┐ рдмрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдпрд╛рдж рдХрд░рддреА рд╣реИред
рдЕрдм рд▓рд╛рдЗрди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХрд╛ рд╕рдВрд╕реНрдХрд░рдгред
class validation find: (rules, rule) ->
рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
lang = errors: min_length: ' , {val} .' max_length: ' , {val} .' min_value: ' , {val}.' max_value: ' , {val}.' numeric: ' .' alpha_numeric: ' .' valid_email: ' .' required: ' .'
рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЛрдХрдкреНрд░рд┐рдп рдиреНрдпреВрдирддрд░ рдЬреЗрдПрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рдЗрд╕рдХрд╛ рдХреЛрдб рдХреЙрдлреАрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
_nano_regex = /\{([\w\.]*)\}/g nano = (template, data) -> template.replace _nano_regex, (str, key) -> keys = key.split(".") value = data[keys.shift()] $.each keys, -> value = value[this] (if (value is null or value is `undefined`) then "" else value)
рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯреНрд░рд╛-рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛рд░реНрдп рдЙрджреНрдзрд░рдг рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рд╣реИред
add_quotes = (str) -> (if str? then str.replace /"/g, """ else '')
рдХреЗ рдЙрдкрдпреЛрдЧ
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдлреЙрд░реНрдо рдореЗрдВ рдРрд╕реЗ рдХреНрд╖реЗрддреНрд░ рд╣реИрдВред
<label></label> <input type=тАЭtextтАЭ name=тАЭnameтАЭ value=тАЭтАЭ> <label></label> <input type=тАЭtextтАЭ name=тАЭsurnameтАЭ> <label></label> <input type=тАЭtextтАЭ name=тАЭemailтАЭ>
рдлрд┐рд░ рд╣рдо рд╕рддреНрдпрд╛рдкрди рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛ рдлреЙрд░реНрдо рд╕рдмрдорд┐рдЯ рдХрд░рдХреЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
rules = name: 'trim|required|min_length[2]|max_length[255]' surname: 'trim|max_length[255]' email: 'trim|required|valid_email|max_length[255]' validation = new validation $('body').on 'submit', 'form', => data = validation.validate rules if data isnt off
рдпрд╣ рдиреНрдпреВрдирддрд░, рд▓рдЪреАрд▓рд╛ рдФрд░ рд╕реБрдВрджрд░ рдХреЛрдб рднреА рдирд┐рдХрд▓рд╛ рд╣реИред