在我的脚本中,我需要用逗号和点以及最大值和最小值验证价格。 这是我的规则()
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(逗号)时,验证不起作用。你知道如何让它发挥作用吗?
答案 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代码。