jQuery 金钱输入掩码在 rails 项目中不起作用

jQuery money input mask not working in rails project

我正在使用 jquery-inputmask-rails gem. Ultimately: it is pulling in Robin Herbots' inputmask jQuery plugin

按照 jquery-inputmask-rails gem 中的说明,我将其放入 application.js:

//= require jquery.inputmask
//= require jquery.inputmask.extensions
//= require jquery.inputmask.numeric.extensions

这是我的两个面具:

$(document).on('turbolinks:load', function() {
  $('.mask_phone').inputmask({mask: "(999) 999-9999"});
  $('.mask_money').inputmask({alias: 'currency', rightAlign: true, placeholder: "", prefix: '', autoGroup: false, digitsOptional: true});
});

就用法而言:您应该能够将适当的掩码 class 添加到输入中:

<%= f.text_field :some_field, class: "mask_money" %>

我遇到的问题是 mask_phone 掩码有效,但 mask_money 根本不起作用。

我在日志中注意到它是这样说的:

TypeError: null is not an object (evaluating 'e.mask.toString')

奇怪的是,在另一个项目中:我没有使用jquery-inputmask-rail gem,而是在Vendor中引入了jQuery输入掩码代码目录直接,它的工作。

我错过了什么?

我的直觉告诉我 jquery-inputmask-rails gem 不是在查看 Robin Herbots 的输入掩码插件的更新版本。

  • 我删除了 gem
  • 我把jQuery.inputmask.bundle.js放在了vender文件夹里。
  • application.js 中,我放置了 //= require jquery.inputmask.bundle.js 并删除了与 gem.
  • 关联的 require 语句

然后我所有的输入掩码都起作用了。

就我而言,我忘记了 execute/call

initializeMasks();

所以不要忘记将此作为 script 块添加到视图或 app/views/model/submodel/action.js.erb 文件中,而不是直接在视图

中使用 <scrip>

在那之后,我能够定义并看到我的 input 字段使用与此类似的东西工作得很好

<%= f.input :ein, input_html: { data: { mask: '00-0000000' } } %>

如您所见,我的掩码并不复杂,只有两位数字,然后是破折号,然后是其他 7 位数字,但我希望这对您有所帮助!