[ Index ] |
|
Code source de Horde 3.1.3 |
1 /** 2 * Javascript to add events to form elements 3 * 4 * $Horde: horde/js/form_helpers.js,v 1.3.4.6 2006/03/24 05:17:59 chuck Exp $ 5 * 6 * Copyright 2004-2006 Matt Kynaston <matt@kynx.org> 7 * 8 * See the enclosed file COPYING for license information (LGPL). If you 9 * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html. 10 */ 11 12 /** 13 * Adds the given event to an element. If the element already has 14 * script for the event, the new event is appended. 15 * 16 * @param object element The element to add the event to. 17 * @param string event The name of the event. 18 * @param string|function function The javascript to execute. 19 */ 20 function addEvent(element, event, code) 21 { 22 if (!element) { 23 return false; 24 } 25 26 // Assign new anonymous function if we're passed a js string 27 // instead of a function reference. 28 if (typeof code == 'string') { 29 code = new Function(code); 30 } 31 32 if (element.addEventListener) { 33 element.addEventListener(event.replace(/on/, ''), code, false); 34 } else if (element.attachEvent) { 35 element.attachEvent(event, code); 36 } else if (element.onload != null) { 37 var OldEvent = element[event]; 38 newCode = Function(e) 39 { 40 oldEvent(e); 41 code(); 42 }; 43 element[event] = newCode; 44 } else { 45 element[event] = code; 46 } 47 48 return true; 49 } 50 51 /** 52 * Returns given value as a number, or zero if NaN. 53 * 54 * @param mixed val 55 * 56 * @return number 57 */ 58 function toNumber(val) 59 { 60 if (isNaN(val)) { 61 return 0; 62 } else { 63 return Number(val); 64 } 65 } 66 67 /** 68 * Sets the enabled state of one element based on the values of another. 69 * 70 * Takes four or more arguments, in the form: 71 * checkEnabled(source, target, true, value1, value2, value3...) 72 * 73 * @param object The element to check 74 * @param string The element to enable/disable 75 * @param boolean Whether to enable or disable the target 76 * @param mixed The value to check against 77 */ 78 function checkEnabled() 79 { 80 if (arguments.length > 2) { 81 objSrc = arguments[0]; 82 objTarget = objSrc.form.elements[arguments[1]]; 83 enabled = arguments[2]; 84 toggle = false; 85 if (objTarget) { 86 switch (objSrc.type.toLowerCase()) { 87 case 'select-one' : 88 val = objSrc.options[objSrc.selectedIndex].value; 89 break; 90 91 case 'select-multiple' : 92 val = new Array(); 93 count = 0; 94 for (var i = 0; i < objSrc.length; ++i) { 95 if (objSrc.options[i].selected) { 96 val[count] = objSrc.options[i].value; 97 } 98 } 99 break; 100 101 case 'checkbox' : 102 if (objSrc.checked) { 103 val = objSrc.value; 104 toggle = true; 105 } 106 break; 107 108 default : 109 val = objSrc.value; 110 } 111 112 for (var i = 3; i < arguments.length; ++i) { 113 if (typeof(val) == 'object' && (arguments[i] in val)) { 114 toggle = true; 115 break; 116 } else if (arguments[i] == val) { 117 toggle = true; 118 break; 119 } 120 } 121 122 objTarget.disabled = toggle ? !enabled : enabled; 123 if (!objTarget.disabled) { 124 objTarget.focus(); 125 } 126 } 127 } 128 } 129 130 /** 131 * Sets the target field to the sum of a range of fields. 132 * 133 * Takes three or more arguments, in the form: 134 * sumFields(form, target, field1, field2, field3...) 135 * 136 * @param object The form to check 137 * @param string The name of the target element 138 * @param string One or more field names to sum 139 */ 140 function sumFields() 141 { 142 if (arguments.length > 2) { 143 objFrm = arguments[0]; 144 objTarget = objFrm.elements[arguments[1]]; 145 sum = 0; 146 if (objTarget) { 147 for (var i = 2; i < arguments.length; ++i) { 148 objSrc = objFrm.elements[arguments[i]]; 149 if (objSrc) { 150 switch (objSrc.type.toLowerCase()) { 151 case 'select-one': 152 sum += toNumber(objSrc.options[objSrc.selectedIndex].value); 153 break; 154 155 case 'select-multiple' : 156 for (var j = 0; j < objSrc.length; ++j) { 157 sum += toNumber(objSrc.options[j].value); 158 } 159 break; 160 161 case 'checkbox' : 162 if (objSrc.checked) { 163 sum += toNumber(objSrc.value); 164 } 165 break; 166 167 default : 168 sum += toNumber(objSrc.value); 169 } 170 } 171 } 172 173 objTarget.value = sum; 174 } 175 } 176 }
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Feb 25 18:01:28 2007 | par Balluche grâce à PHPXref 0.7 |