jQuery маска ввода денег не работает в проекте рельсов

Я использую драгоценный камень jquery-inputmask-rails. В конечном итоге: он использует плагин jQuery Робина Хербота для ввода маски.

Как указано в jquery-inputmask-rails драгоценный камень, я положил это в 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 не является объектом (оценка 'e.mask.toString')

Странно то, что в другом проекте: я не использовал гем jquery-inputmask-rail, а вместо этого ввел код маски ввода jQuery непосредственно в каталог Vendor, и это сработало.

Что мне не хватает?

2 ответа

Решение

Моя интуиция говорит мне, что гем jquery-inputmask-rails не ищет обновленную версию плагина ввода маски Робина Херботса.

  • Я удалил драгоценный камень
  • Я поместил jQuery.inputmask.bundle.js в vender папка.
  • В application.js я кладу //= require jquery.inputmask.bundle.js и удалил требуемые заявления, связанные с драгоценным камнем.

И тогда все мои входные маски сработали.

В моем случае я забыл выполнить / позвонить

initializeMasks();

так что не забудьте добавить это как script блок в представлении или в app/views/model/submodel/action.js.erb файл вместо использования <scrip> прямо на виду

после этого я смог определить и увидеть мой input поле работать просто отлично, используя что-то похожее на это

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

Как вы можете видеть, моя маска не сложна, только две цифры, затем тире, а затем и другие 7 цифр, но я надеюсь, что это поможет!

Другие вопросы по тегам