【问题标题】:yii2 number max, min with dot and comma validationyii2 number max, min with dot and comma validation
【发布时间】:2016-08-11 19:10:45
【问题描述】:

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

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

当我输入 25.00 (.dot) 之类的价格时效果很好,但是当我输入 25,01 (, 逗号) 时,验证不起作用。你知道如何让它工作吗?

【问题讨论】:

    标签: php validation yii2 price


    【解决方案1】:

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

    【讨论】:

    • 谢谢!这很好用,但我不得不删除 $this->registerJs(" ");
    • @Damian 我明白了。好吧,我也很高兴它运作良好!
    猜你喜欢
    • 2021-07-14
    • 2016-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多