| [ Index ] |
PHP Cross Reference of Moodle 1.9.3 [Build 15-Oct-2008] |
[Summary view] [Print] [Text view]
1 /**** 2 Author: Jerome Mouneyrac 3 Bug Reference: http://tracker.moodle.org/browse/MDL-14439 4 IE and Opera fire the onchange when ever you move into a dropdwown list with the keyboard. 5 These functions fix this problem. 6 ****/ 7 8 /* 9 global variables 10 11 Note: 12 if I didn't use global variables, we would need to pass them as parameter: 13 => in initSelect(): 14 I would write "theSelect.onchange = selectChanged(...);" 15 This code causes a javascript error on IE. (not firefox) 16 so I had to write theSelect.onchange = selectChanged; It's why I use global variables . 17 Because I use global variables, I didn't put this code in javascript-static.js. 18 This file is loaded in javascript.php. 19 */ 20 var select_formid; 21 var select_targetwindow; 22 23 //we redefine all user actions on the dropdown list 24 //onfocus, onchange, onkeydown, and onclick 25 function initSelect(formId,targetWindow) 26 { 27 //initialise global variables 28 select_formid=formId; 29 select_targetwindow=targetWindow; 30 31 var theSelect = document.getElementById(select_formid+"_jump"); 32 33 theSelect.changed = false; 34 35 selectFocussed(); 36 37 theSelect.onchange = selectChanged; 38 theSelect.onkeydown = selectKeyed; 39 theSelect.onclick = selectClicked; 40 41 return true; 42 } 43 44 function selectChanged(theElement) 45 { 46 var theSelect; 47 48 if (theElement && theElement.value) 49 { 50 theSelect = theElement; 51 } 52 else 53 { 54 theSelect = this; 55 } 56 57 if (!theSelect.changed) 58 { 59 return false; 60 } 61 62 //here is the onchange redirection 63 select_targetwindow.location=document.getElementById(select_formid).jump.options[document.getElementById(select_formid).jump.selectedIndex].value; 64 65 return true; 66 } 67 68 function selectClicked() 69 { 70 this.changed = true; 71 } 72 73 function selectFocussed() 74 { 75 this.initValue = this.value; 76 77 return true; 78 } 79 80 //we keep Firefox behaviors: onchange is fired when we press "Enter", "Esc", or "Tab"" keys. 81 //note that is probably not working on Mac (keyCode could be different) 82 function selectKeyed(e) 83 { 84 var theEvent; 85 var keyCodeTab = "9"; 86 var keyCodeEnter = "13"; 87 var keyCodeEsc = "27"; 88 89 if (e) 90 { 91 theEvent = e; 92 } 93 else 94 { 95 theEvent = event; 96 } 97 98 if ((theEvent.keyCode == keyCodeEnter || theEvent.keyCode == keyCodeTab) && this.value != this.initValue) 99 { 100 this.changed = true; 101 selectChanged(this); 102 } 103 else if (theEvent.keyCode == keyCodeEsc) 104 { 105 this.value = this.initValue; 106 } 107 else 108 { 109 this.changed = false; 110 } 111 112 return true; 113 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Wed Jan 14 11:33:29 2009 | Cross-referenced by PHPXref 0.7 |