Autor | Zpráva | ||
---|---|---|---|
Jan Knížek Profil |
#1 · Zasláno: 8. 5. 2011, 20:00:42
Dobrý dne, potřeboval bych něco jako je vyhledávání v googlu. Když zadám nějaké slovo, on mi najde nějaké alternativy. Vím jak na to, prostě tam hodím AJAX. Existuje v textovém poli nějaké atribut, který určuje nabízené hodnoty? Nebo si to musím naprogramovat?
Díky Jan Knížek. |
||
Ernie Profil |
#2 · Zasláno: 8. 5. 2011, 20:54:02
Myslím, že se to musí naprogramovat.
Něco takového jsem našel v knize Praktický JavaScript od Pavla Kouta (vydal Zoner Press v roce 2004 v Brně) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"/> <title>Postupné zpřesňování vyběru</title> <style type="text/css"> input { width: 150px; border: 1px solid black; } </style> <script language="Javascript" type="text/javascript"> <!-- function SelObj(jmenoformulare,selname,textjmeno,str) { this.jmenoformulare = jmenoformulare; this.selname = selname; this.textjmeno = textjmeno; this.vyberrezezce = str || ''; this.vyberpole = new Array(); this.spusteni = spusteni; this.bldspusteni = bldspusteni; this.bldaktualizace = bldaktualizace; } function spusteni() { if (this.vyberrezezce =='') { for(var i=0;i<document.forms[this.jmenoformulare][this.selname].options.length;i++) { this.vyberpole[i] = document.forms[this.jmenoformulare][this.selname].options[i]; this.vyberrezezce += document.forms[this.jmenoformulare][this.selname].options[i].value+":"+ document.forms[this.jmenoformulare][this.selname].options[i].text+","; } } else { var tempArr = this.vyberrezezce.split(','); for(var i=0;i<tempArr.length;i++) { var prop = tempArr[i].split(':'); this.vyberpole[i] = new Option(prop[1],prop[0]); } } return; } function bldspusteni() { this.spusteni(); for(var i=0;i<this.vyberpole.length;i++) document.forms[this.jmenoformulare][this.selname].options[i] = this.vyberpole[i]; document.forms[this.jmenoformulare][this.selname].options.length = this.vyberpole.length; return; } function bldaktualizace() { var str = document.forms[this.jmenoformulare][this.textjmeno].value.replace('^\\s*',''); if(str == '') {this.bldspusteni();return;} this.spusteni(); var j = 0; pattern1 = new RegExp("^"+str,"i"); for(var i=0;i<this.vyberpole.length;i++) if(pattern1.test(this.vyberpole[i].text)) document.forms[this.jmenoformulare][this.selname].options[j++] = this.vyberpole[i]; document.forms[this.jmenoformulare][this.selname].options.length = j; if(j==1){ document.forms[this.jmenoformulare][this.selname].options[0].selected = true; } } function nastaveni() { obj1 = new SelObj('menuform','itemlist','entry'); obj1.bldspusteni(); } // --> </script> </head> <body onload="javascript:nastaveni()"> <h1>Postupné zpřesňování vyběru</h1> <p>Zadejte hledaný výraz a postupně jej zpřesňujte:</p> <form name="menuform" onSubmit="javascript:window.location = document.menuform.itemlist.options[document.menuform.itemlist.selectedIndex].value;return false;"> <input type="text" name="entry" onkeyup="javascript:obj1.bldaktualizace();" /> <br /> <select name="itemlist" size="5"> <option>a</option> <option>a co</option> <option>a co bude</option> <option>a co bude se</option> <option>a co bude se mnou</option> <option>a další</option> <option>a další má</option> <option>a další má všechno</option> <option>a naopak</option> <option>a proto</option> <option>abatyše</option> <option>abdikovat</option> <option>abeceda</option> <option>abeceda znaků</option> <option>b</option> <option>ba ovšem</option> <option>babička</option> <option>babička je naše</option> <option>babí lélo</option> <option>bacil</option> <option>bacil antraxu</option> <option>bacil tenatu</option> <option>bacil záškrtu</option> <option>cedrový</option> <option>cedrový háj</option> <option>cedrový kopec</option> <option>cedrový park</option> </select> </div></form> </body> </html> |
||
Stano Profil |
#3 · Zasláno: 8. 5. 2011, 21:00:29 · Upravil/a: Stano
Jan Knížek:
najprv treba vypnúť automatické ponúkanie výrazov ktoré boli hľadané predtým A UTOCOMPLETE=OFF tieto automatické dopĺňačky sa volajú autosuggest google ich je plný. okrem ajaxu je ešte jedno riešenie. napríklad ak máte stránku kde máte zoznam aut. tak vygenerovať pole so všetkými názvami aut a z toho poľa vyberat možnosti podľa už vložených začiatočných písmen. |
||
Časová prodleva: 3 dny
|
|||
Jan Knížek Profil |
#4 · Zasláno: 11. 5. 2011, 23:39:37
Díky za vaše rady, ale nevěděli by jste jak to udělat designem? Myslel jsem udělat to přes listbox, který bych marginem zvedl o 100% nahoru, neexistuje něco lepšího?
|
||
Časová prodleva: 13 let
|
0