Zend Form 无法验证浮点数
Zend Form can't validate float number
我有这个表单元素:
$this->addElement('text', 'prezzo', array(
'label' => 'Prezzo (*)',
'filter' => '',
'description' => 'Il prezzo non è comprensivo di sconto, ma se previsto verrà calcolato',
'required' => true,
'validators' => array('Float'),
'placeholder' => 'Prezzo Pneumatico',
'class' => 'form-control'
));
如果我输入这样的数字 24.50
我会在验证时出错,而如果我输入这样的数字 24,50
我不会收到任何错误。
我认为问题出在我的 Bootstrap.php
中的 Zend_Locale
,我设置了这个值:
protected function _initLocale() {
$locale = new Zend_Locale ( 'it' );
Zend_Registry::set ( 'locale', $locale );
}
可能一种解决方案是过滤输入并将 '.'
替换为 ','
。
你能帮帮我吗?
如果您想在 en locale 中验证,例如24.50 将 locale option 设置为您的验证器。
$this->addElement('text', 'prezzo', array(
'label' => 'Prezzo (*)',
'filter' => '',
'description' => 'Il prezzo non è comprensivo di sconto, ma se previsto verrà calcolato',
'required' => true,
'validators' => array(array('Float', true, array('locale' => 'en'))),
'placeholder' => 'Prezzo Pneumatico',
'class' => 'form-control'
));
我是这样解决的:
<script type="text/javascript">
$(function(){
$('form[name=pneumatico]').find('input[name=prezzo]').keyup(function() {
$(this).val($(this).val().replace('.', ','));
});
$('form[name=pneumatico]').find('input[name=sconto]').keyup(function() {
$(this).val($(this).val().replace('.', ','));
});
}); </script>
谢谢
我有这个表单元素:
$this->addElement('text', 'prezzo', array(
'label' => 'Prezzo (*)',
'filter' => '',
'description' => 'Il prezzo non è comprensivo di sconto, ma se previsto verrà calcolato',
'required' => true,
'validators' => array('Float'),
'placeholder' => 'Prezzo Pneumatico',
'class' => 'form-control'
));
如果我输入这样的数字 24.50
我会在验证时出错,而如果我输入这样的数字 24,50
我不会收到任何错误。
我认为问题出在我的 Bootstrap.php
中的 Zend_Locale
,我设置了这个值:
protected function _initLocale() {
$locale = new Zend_Locale ( 'it' );
Zend_Registry::set ( 'locale', $locale );
}
可能一种解决方案是过滤输入并将 '.'
替换为 ','
。
你能帮帮我吗?
如果您想在 en locale 中验证,例如24.50 将 locale option 设置为您的验证器。
$this->addElement('text', 'prezzo', array(
'label' => 'Prezzo (*)',
'filter' => '',
'description' => 'Il prezzo non è comprensivo di sconto, ma se previsto verrà calcolato',
'required' => true,
'validators' => array(array('Float', true, array('locale' => 'en'))),
'placeholder' => 'Prezzo Pneumatico',
'class' => 'form-control'
));
我是这样解决的:
<script type="text/javascript">
$(function(){
$('form[name=pneumatico]').find('input[name=prezzo]').keyup(function() {
$(this).val($(this).val().replace('.', ','));
});
$('form[name=pneumatico]').find('input[name=sconto]').keyup(function() {
$(this).val($(this).val().replace('.', ','));
});
}); </script>
谢谢