2

我有這樣的表單元素:Zend的形式無法驗證浮點數

$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.phpZend_Locale在哪裏設置這個值:

protected function _initLocale() { 
    $locale = new Zend_Locale ('it'); 
    Zend_Registry::set ('locale', $locale); 
} 

大概一個soluction是過濾輸入與','取代'.'。 你能幫我嗎?

+0

通過使用JavaScript,當提交事件開始,改變你的浮到一個字符串,替換用逗號點,然後將其轉換回浮動(如果演員不是自動創建的)。 –

回答

3

如果要驗證en現場例如, 24.50locale 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' 
)); 
+0

以這種方式我得到這個錯誤:'無效驗證器傳遞給addValidators()' –

+0

哦,我錯過驗證器必須在數組中。 – venca

+0

現在,它的工作,謝謝 –

0

我以這種方式解決:

<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> 

感謝