2016-08-11 129 views
1

在我的腳本中,我需要用逗號和點以及最大值和最小值驗證價格。 這是我的規則()yii2最大值,最小值,帶點和逗號驗證

return [ 
     [['price'], 'required', 'message' => 'Price ...'], 
     [['price'], 'number', 'numberPattern' => '/^[0-9]{1,2}([\.,][0-9]{1,2})*$/', 
      'message' => 'Price ...', 'max' => 25, min => '0'], 
    ]; 

它的工作原理很好,當我把價格像25.00(點),但是當我把25,01(,逗號)驗證不起作用。你有什麼想法如何使它工作?

回答

2

我發現這個解決方案能夠很好地處理所有輸入,而且您不需要查找特定的小部件選項。在您的查看文件(在底部首選)註冊JS:

$this->registerJs("   
    $(document).ready(function() { 
     $(document).on('keyup', 'input', function(e){ 
      $(this).val($(this).val().replace(/[,]/g, '.')); 
     }); 
    }); 
"); 

這將改變所有逗號在所有輸入。我測試了自己(當然),它運行良好。

如果,但是,想辦法改變只在某些輸入這應該是應用,你就會有一個自定義類添加到他們每個人,然後這個代碼稍微更改爲:

$this->registerJs("   
    $(document).ready(function() { 
     $(document).on('keyup', '.CustomClassName', function(e){ 
      $(this).val($(this).val().replace(/[,]/g, '.')); 
     }); 
    }); 
"); 

我認爲它比使用小部件選項更好,因爲您將被要求找到這樣一個(你甚至不知道這個選項是否存在於第一位),而這個將永遠存在,只要你不要忘記添加自定義類並註冊此JavaScript代碼。

+0

謝謝!這工作得很好,但我不得不刪除$ this-> registerJs(「」); –

+0

@Damian我明白了。那麼,我很高興這也運作良好! –

相關問題