Browse Source

Setting of step for decimal field based on precision.

U-Zyn Chua 12 years ago
parent
commit
4806d09d7e

+ 1 - 1
lib/Cake/Test/Case/View/Helper/FormHelperTest.php

@@ -1883,7 +1883,7 @@ class FormHelperTest extends CakeTestCase {
 			'label' => array('for'),
 			'Cost Decimal',
 			'/label',
-			'input' => array('name', 'type' => 'number', 'id'),
+			'input' => array('name', 'type' => 'number', 'step' => '0.001', 'id'),
 			'/div',
 		);
 		$this->assertTags($result, $expected);

+ 5 - 2
lib/Cake/View/Helper/FormHelper.php

@@ -1160,10 +1160,13 @@ class FormHelper extends AppHelper {
 			}
 			if (
 				$options['type'] === 'number' &&
-				$type === 'float' &&
 				!isset($options['step'])
 			) {
-				$options['step'] = 'any';
+				if ($type === 'decimal') {
+					$options['step'] = pow(10, -1 * substr($fieldDef['length'], strpos($fieldDef['length'], ',') + 1));
+				} elseif ($type === 'float') {
+					$options['step'] = 'any';
+				}
 			}
 		}