[ Index ]
 

Code source de Horde 3.1.3

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/js/ -> form_helpers.js (source)

   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  }


Généré le : Sun Feb 25 18:01:28 2007 par Balluche grâce à PHPXref 0.7