12. august 2004 - 09:39Der er
4 kommentarer og 1 løsning
global værdi problem (onBlur vs onFocus)
Jeg kalder en function der søger efter en bestem værdi i en dropdown. Skriver man "Kø" (onKeyDown) i dropdownen finder den eksempelvis "København". Function'en bruges i mange drop-downs på siden. Jeg har brug for at gemme det der indtastes så længe jeg er i den enkelte drop-down. Men går jeg til en anden så skal den globale værdi reset'es. Jeg kan IKKE bruge onBlur i HTML'en da funktionen blur'er dropdownen.
var Typed="";
//Kaldes via onKeyDown i HTML function KeyPress(thePerson, theDrop) { //bla.. bla..... theTyped+=String.fromCharCode(event.keyCode).toLowerCase(); //bla.. bla..... }
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
// This is a global value to determine which item to select var selectedOption=0; var KeyPressEnabled; var theTyped="";
function SelectChange(Drop1) { var KeyPressEnabled = true; // We use this function to disable any dynamic selecting of the // combo-box when the user uses the mouse to select items. if (KeyPressEnabled) { Drop1.selectedIndex = selectedOption; } } function ClearTyped() { theTyped=""; }
function KeyPress(thePerson, theDrop) { var Drop1= theDrop; var main = thePerson;
KeyPressEnabled = true;
// Keycode 38 and 40 are the up and down arrow buttons, in case the user // uses the arrow keys to select items. We reset the value of what they // have typed and change the global selected item value. if (event.keyCode == 38) { theTyped=""; selectedOption = Drop1.selectedIndex - 1; return; }
// Keycode 27 is escape, so the user can clear out what // they have typed so far if (event.keyCode == 27) { Drop1.selectedIndex = 0; theTyped=""; return; }
// Keycode 32 is a space if (event.keyCode != 32) { if ((event.keyCode < 65 || event.keyCode > 90) && !(event.keyCode == 27 || event.keyCode==222 || event.keyCode==221 || event.keyCode==192)) { return; } }
// Convert the ASCII keycode value to a character and add the key // entered to a "buffer". Normally, this would be a hidden field. if(event.keyCode==222) { theTyped+="ø"; } else if(event.keyCode==221) { theTyped+="å"; } else if(event.keyCode==192) { theTyped+="æ"; } else if(event.keyCode==27) { theTyped+=""; } else { theTyped+=String.fromCharCode(event.keyCode).toLowerCase(); }
setTimeout("",100);//put some delay because select's behavior
// Loop through the select list to find any matches for (x = 0; x < Drop1.length; x++) { var tmpOptionText = ""; var OptionText = Drop1.options[x].text;
// Loop through the value of each select item, and if there is a // match on what they have typed in, set the global variable for that value. // The browser will run the onChange event since you typed a key. We'll // run SelectChange() in the onChangeEvent just to be sure. for (y = 0; y < OptionText.length; y ++) { tmpOptionText += OptionText.charAt(y).toLowerCase();
<select name="drop1" onKeyDown="KeyPress(person, this);"> //Virker ikke da theTyped har samme værdi som det der er tastet i drop1 <select name="drop2" onKeyDown="KeyPress(person, this);">
Hvis du gør den til et array kan de tilhøre hver sin dropdown, men hvad så, hvis man vender tilbage ?-)
<script type="text/javascript"> var selectedOption=0; var KeyPressEnabled; var theTyped = new Array();
function SelectChange(Drop1) { var KeyPressEnabled = true; // We use this function to disable any dynamic selecting of the // combo-box when the user uses the mouse to select items. if (KeyPressEnabled) { Drop1.selectedIndex = selectedOption; } } function ClearTyped(id) { theTyped[id]=""; }
function KeyPress(thePerson, theDrop) { var Drop1= theDrop; id = theDrop.name; var main = thePerson; if(!theTyped[id])theTyped[id]="";
KeyPressEnabled = true;
// Keycode 38 and 40 are the up and down arrow buttons, in case the user // uses the arrow keys to select items. We reset the value of what they // have typed and change the global selected item value. if (event.keyCode == 38) { theTyped[id]=""; selectedOption = Drop1.selectedIndex - 1; return; }
// Keycode 27 is escape, so the user can clear out what // they have typed so far if (event.keyCode == 27) { Drop1.selectedIndex = 0; theTyped[id]=""; return; }
// Keycode 32 is a space if (event.keyCode != 32) { if ((event.keyCode < 65 || event.keyCode > 90) && !(event.keyCode == 27 || event.keyCode==222 || event.keyCode==221 || event.keyCode==192)) { return; } }
// Convert the ASCII keycode value to a character and add the key // entered to a "buffer". Normally, this would be a hidden field. if(event.keyCode==222) { theTyped[id]+="ø"; } else if(event.keyCode==221) { theTyped[id]+="å"; } else if(event.keyCode==192) { theTyped[id]+="æ"; } else if(event.keyCode==27) { theTyped[id]+=""; } else { theTyped[id]+=String.fromCharCode(event.keyCode).toLowerCase(); }
setTimeout("",100);//put some delay because select's behavior
// Loop through the select list to find any matches for (x = 0; x < Drop1.length; x++) { var tmpOptionText = ""; var OptionText = Drop1.options[x].text;
// Loop through the value of each select item, and if there is a // match on what they have typed in, set the global variable for that value. // The browser will run the onChange event since you typed a key. We'll // run SelectChange() in the onChangeEvent just to be sure. for (y = 0; y < OptionText.length; y ++) { tmpOptionText += OptionText.charAt(y).toLowerCase();
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.