yii2数字max,min,带点和逗号验证

时间:2016-08-11 19:10:46

标签: php validation yii2 price

在我的脚本中,我需要用逗号和点以及最大值和最小值验证价格。 这是我的规则()

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(逗号)时,验证不起作用。你知道如何让它发挥作用吗?

1 个答案:

答案 0 :(得分:1)

我发现此解决方案适用于所有输入,您不需要查找特定的窗口小部件选项。在查看文件(位于首选底部)注册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代码。