开发者问题收集

jQuery 货币输入掩码在 Rails 项目中不起作用

2017-07-07
1829

我正在使用 jquery-inputmask-rails gem。最终:它引入了 Robin Herbots 的 inputmask jQuery 插件

按照 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});
});

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

<%= 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,而是直接将 jQuery 输入掩码代码带入 Vendor 目录,并且它起作用了。

我遗漏了什么?

2个回答

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

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

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

Neil
2017-07-07

就我而言,我忘记执行/调用

initializeMasks();

因此,请不要忘记在视图中或 app/views/model/submodel/action.js.erb 文件中将其添加为 script 块,而不是在视图中使用 <scrip>

之后,我能够定义并看到我的 input 字段使用与此类似的内容正常工作

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

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

d1jhoni1b
2018-09-12