Autor Zpráva
Jan Knížek
Profil
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
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
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.
Jan Knížek
Profil
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?

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0