From 4806d09d7e3a118fc65d98f082d8a75687339ec8 Mon Sep 17 00:00:00 2001 From: U-Zyn Chua Date: Sun, 29 Sep 2013 22:44:50 +0800 Subject: [PATCH] Setting of step for decimal field based on precision. --- lib/Cake/Test/Case/View/Helper/FormHelperTest.php | 2 +- lib/Cake/View/Helper/FormHelper.php | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/Cake/Test/Case/View/Helper/FormHelperTest.php b/lib/Cake/Test/Case/View/Helper/FormHelperTest.php index a3c39aeeb62..f8712b40983 100644 --- a/lib/Cake/Test/Case/View/Helper/FormHelperTest.php +++ b/lib/Cake/Test/Case/View/Helper/FormHelperTest.php @@ -1883,7 +1883,7 @@ public function testInput() { '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); diff --git a/lib/Cake/View/Helper/FormHelper.php b/lib/Cake/View/Helper/FormHelper.php index 11f2fc070df..f7f2fbb6318 100644 --- a/lib/Cake/View/Helper/FormHelper.php +++ b/lib/Cake/View/Helper/FormHelper.php @@ -1160,10 +1160,13 @@ protected function _magicOptions($options) { } 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'; + } } }