Weird locales seem to mess with uppercase i, and php seems to like to
[squirrelmail.git] / 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() {