Added javascript validation to integer and float widgets.
authorpdontthink <pdontthink@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Tue, 4 Mar 2003 08:50:16 +0000 (08:50 +0000)
committerpdontthink <pdontthink@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Tue, 4 Mar 2003 08:50:16 +0000 (08:50 +0000)
git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@4584 7612ce4b-ef26-0410-bec9-ea0150e637f0

functions/options.php

index fd6e2fd6dac937052655af4e914a5157fca67f3f..0f284d0bbeebdd209cd385b11c0200976c8eb21b 100644 (file)
@@ -274,11 +274,24 @@ class SquirrelOption {
     }
 
     function createWidget_Integer() {
-        return ($this->createWidget_String());
+
+        // add onChange javascript handler to a regular string widget
+        // which will strip out all non-numeric chars
+        return preg_replace('/>/', ' onChange="a=this.value; b=\'\'; '
+                    . 'for (i=0;i<a.length;i++) { if (a.charAt(i)>=\'0\' '
+                    . '&& a.charAt(i)<=\'9\') b += a.charAt(i); } '
+                    . 'this.value=b;">', $this->createWidget_String());
     }
 
     function createWidget_Float() {
-        return ($this->createWidget_String());
+        
+        // add onChange javascript handler to a regular string widget
+        // which will strip out all non-numeric (period also OK) chars 
+        return preg_replace('/>/', ' onChange="a=this.value; b=\'\'; '
+                    . 'for (i=0;i<a.length;i++) { if ((a.charAt(i)>=\'0\' '
+                    . '&& a.charAt(i)<=\'9\') || a.charAt(i)==\'.\') '
+                    . 'b += a.charAt(i); } this.value=b;">'
+                , $this->createWidget_String());
     }
 
     function createWidget_Boolean() {