рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЦреЛрдЬ рдЪреБрдирд┐рдВрджрд╛ рд╕реВрдЪреА рдореЗрдВ

рдиреАрдЪреЗ рд╣рдо рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдЦреЛрдЬ рд╡рд┐рдзрд┐ (рдЪрдпрди) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдФрд░ рд╕реНрд╡рдпрдВ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
<input class="type-search" type="text" /> <select size="10" id="list"> <option value="val">Text</option> ... <option value="val*n">Text</option> </select> 

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЕрдзрд┐рдХ рджреГрд╢реНрдпрдорд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ 10 рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде рдЖрдХрд╛рд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдЪрдпрди рдЯреИрдЧ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕рдореЗрдВ рдереЛрдбрд╝реА рд╕реАрдПрд╕рдПрд╕ рдЬреЛрдбрд╝реЗрдВ:
 input, select { width: 300px; margin: 10px auto; display: block; } 

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

рд╕реВрдЪреА рдЦреЛрдЬ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдФрд░ рдЪреВрдВрдХрд┐ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдорд╛рди рд╕реНрдерд┐рд░ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рд╢рд╛рдмреНрджрд┐рдХ рдХреЗ рдмрдЬрд╛рдп рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ ( рдирдП RegExp () ) рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ:
 var field = $('#list').find('option'); //   $('#searchInput').bind('keyup', function() { var q = new RegExp($(this).val(), 'ig'); for (var i = 0, l = field.length; i < l; i += 1) { var option = $(field[i]), parent = option.parent(); if ($(field[i]).text().match(q)) { if (parent.is('span')) { option.show(); parent.replaceWith(option); } } else { if (option.is('option') && (!parent.is('span'))) { option.wrap('<span>').hide(); } } } }); 

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

рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрдкреИрди рдЯреИрдЧ рдореЗрдВ рд▓рд┐рдкрдЯреЗ рдПрдХ рд╣реА рд╡рд┐рдХрд▓реНрдк рдЯреИрдЧ рдХреЗ рдХрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд┐рдВрдЯ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реИ: рдХреЛрдИ рднреА рдирд╣реАрдВ , рдФрд░ рдмрд┐рд▓реНрдХреБрд▓ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред

рдкреБрдирд╢реНрдЪ: рдпрд╣ рд╡рд┐рдзрд┐ рди рддреЛ рдорд╛рдиреНрдп рд╣реИ рдФрд░ рди рд╣реА рд╢рдмреНрджрд╛рд░реНрдерд┐рдХ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ ред

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


All Articles