【问题标题】:Symfony 3.4: apply mask to MoneyType fieldSymfony 3.4:将掩码应用于 MoneyType 字段
【发布时间】:2018-10-24 06:47:52
【问题描述】:

我正在使用 Symfony 3.4,我正在尝试为我的 MoneyType | 应用掩码NumberType 字段,

面具的作用是在前面制作:

1) 格式化数字(强制):

12000.5 => 12 000.5

1234567.2 => 1 234 567.2

2) 禁用非数字字段(可选):

当用户尝试点击一个字符时,输入永远不会改变。

为此,我尝试使用 JQuery 库,但在提交表单时遇到问题,后端认为输入不是数字,因此不满足 $form->isValid()

表单类型:

->add('prixUnit', NumberType::class, array(
  "grouping" => true, //works only on show mode not on newAction
  'attr' => array(
    "class" => "number"
    "min" => 0,
    "step" => 0.100,
    "placeholder" => "0.000",

  )
))

树枝:

$('.number').maskSomeLibrariesJquery();

我正在寻找一个干净的 Symfony 解决方案来格式化我的字段,而不会在后端出现问题。

【问题讨论】:

  • 您可以删除提交数据的掩码以避免类型错误。 Lokk 这个解决方案:stackoverflow.com/questions/7854651/…
  • 是的,这就是我已经适应的解决方案,但是当用户刷新页面时,我必须在刷新页面之前取消屏蔽输入!但是处理刷新事件的代码对我不起作用!

标签: symfony symfony-forms symfony-3.4


【解决方案1】:

试试this jquery plugin,这里是example。使用此插件,您可以选择带小数选项的分隔符,默认为点(“。”),但您可以通过空格(“”)更改它。

也可以通过属性来配置

<input type="text" data-symbol="R$ " data-thousands="." data-decimal="," />

还有一些提示,例如:

.maskMoney('unmasked') 返回一个浮点值(例如:'R$ 1.234,56' => 1234.56)。 PS:如果你只有一个输入字段,你应该使用这种方式.maskMoney('unmasked')[0],因为它总是返回一个数组。

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多