| Autor | Zpráva | ||
|---|---|---|---|
| hunter_dave Profil |
#1 · Zasláno: 12. 8. 2011, 00:01:36 · Upravil/a: hunter_dave
Zdravím mám našeptávač, všechno funguje perfektně, až na to, že když napíšu např: "po" ... našeptávač bere jenom "p" když napíšu "pod" bere "po" fce se spustí až po druhé události onkeyup a nevím proč. tady je zdroják:
Pokud to chce někdo vyzkoušet v praxi : http://tests.field.cz Zadejte např "po"
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<title></title>
<script src="jquery.js" >
</script>
<style>
.whispererdiv{
width:100%;
font-size:80%;
cursor:default;
}
</style>
</head>
<body>event.keyCode enter13|down40|up38|right39<br>
<input type=text value="" onkeyup="getwhisperer();" onfocus="getwhisperer();" onblur="hidewhisperer();" autocomplete="off" size=26 id=searchfield>
<input type=hidden id=backup_whisperer>
<br>
<div style="display:none;z-index:1;width:195px;height:100px;border:1px solid black;overflow:auto;" id="whisperer">
</div>
<script type=text/javascript>
function getwhisperer(){
$.get("whisperer.php?search="+document.getElementById('searchfield').value+"", function(response){result = response;});
if(result!=""){
document.getElementById('whisperer').innerHTML=result;
document.getElementById('whisperer').style.display="";
}
else{
document.getElementById('whisperer').innerHTML="";
document.getElementById('whisperer').style.display="none";
}
}
function hidewhisperer(text){
document.getElementById('whisperer').style.display="none";
}
function fillsearch(text){
document.getElementById('searchfield').value=text;
hidewhisperer();
}
function whispererchange(id){
var backup = document.getElementById('backup_whisperer').value
if ( backup != "" ){
document.getElementById(backup).style.backgroundColor = "";
}
document.getElementById(id).style.backgroundColor = "dodgerblue";
document.getElementById('backup_whisperer').value = id;
}
</script>
</body>
</html>
|
||
| Liennie Profil |
#2 · Zasláno: 12. 8. 2011, 00:26:04 · Upravil/a: Liennie
Edit: Chyba byla nakonec ve skriptu. Funkce na 23. řádku se spouští, až dostane odpověď od souboru, takže se nejdřív provedl zbytek kódu, který v proměnné result viděl předchozí hodnotu a až potom se proměnná result přepsala. function getwhisperer(){
$.get("whisperer.php?search="+document.getElementById('searchfield').value+"", function(response){
result = response;
if(result!=""){
document.getElementById('whisperer').innerHTML=result;
document.getElementById('whisperer').style.display="";
}
else{
document.getElementById('whisperer').innerHTML="";
document.getElementById('whisperer').style.display="none";
}
});
} |
||
| hunter_dave Profil |
#3 · Zasláno: 12. 8. 2011, 00:39:55
To už jsem zkoušel .. nefunguje .. spoustel jsem to se spozdenim 500 ms .. dokonce jsem skousel alertem podívat se na hodnotu inputu .. byla spravne ..
|
||
| hunter_dave Profil |
#4 · Zasláno: 12. 8. 2011, 00:43:22
krom toho je to udalost onkeyup a znak se zapisuje pri stisku klavesy ne pri jejim pusteni
|
||
| Chamurappi Profil |
#5 · Zasláno: 12. 8. 2011, 00:48:09
Reaguji na huntera_dave:
To první áčko ve zkratce AJAX znamená asynchronní. Nemůžeš pracovat s resultem těsně poté, co jsi vyslal požadavek na server, protože ještě nedorazila odpověď ze serveru a funkce plnící result se ještě nevykonala.
|
||
| hunter_dave Profil |
#6 · Zasláno: 12. 8. 2011, 00:59:07
a jak to mám napravit?
|
||
| hunter_dave Profil |
#7 · Zasláno: 12. 8. 2011, 01:46:46
Díky radě Chamurappiho jsem to vyřešil ... funguje to .. dodělal jsem ještě navigaci šipkami .. dolu, nahoru .. doprava(vyplnit) enter (vyplnit a odeslat). Díky moc :)
|
||
|
Časová prodleva: 14 let
|
|||
0