Как сохранить суффикс при маскировании ввода с помощью jQuery - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь замаскировать пользовательский ввод следующей маской "######## - ##. ####. 7.09.009", используя jQuery, поэтому, когда пользователь начинает печатать, он будет идтикак это:

1 ______-__.____. 7.09.009 (пользователь набрал 1)

12 _____-__.____. 7.09.009 (пользователь набрал 2)

123 ____-__.____. 7.09.009 (пользователь набрал 3)

и т. Д., Пока не достигнет части «7.09.009».

Пользователь не должен иметь возможности редактировать эту часть,это как фиксированный заполнитель там.Я попытался использовать маску ввода Jasny с некоторым успехом, но так как числа маскируются с 0 и фиксированный суффикс имеет 0, это позволило пользователю печатать там, где в фиксированной части есть нули.Я не нашел способа заменить местозаполнитель чисел с 0 на что-то еще, так как я представляю, что это решило бы мою проблему.

Затем я нашел другой плагин маски jQuery , который позволяет мнемаскировать числа с помощью #, но, поскольку он также распознает 0 как заполнитель для чисел, в итоге он не работает.Я также попытался создать собственную маску, например, так:

 $("#numero-processo").mask('0000000-00.0000.A.BC.BBC',
          {placeholder: "_______-__.____.7.09.009",
          'translation': {
               A: {pattern: /[7]/},
               B: {pattern: /[0]/},
               C: {pattern: /[9]/}
           }});

Это работало до некоторой степени, но когда пользователь достиг фиксированной части суффикса, (ему / ей) пришлось бы фактически ввести суффикс "7.09.009 ", и это единственное, что может быть разрешено там из-за пользовательской маски.Однако я не хочу, чтобы пользователь вводил суффикс, его нужно исправить там.Кто-нибудь знает, как этого добиться?Спасибо.

Ответы [ 3 ]

0 голосов
/ 19 сентября 2018
$("#numero-processo").keyup(function(){
    var input = $(this).val();
    if(input.length == 15) {
        input += ".7.09.009";
        $(this).val(input);
    }
});
0 голосов
/ 19 сентября 2018

Вы можете сделать это, используя эту библиотеку

<script src="https://rawgit.com/RobinHerbots/Inputmask/4.x/dist/jquery.inputmask.bundle.js"></script>

Ваш javascript будет:

<input id="numero-processo" placeholder="_______-__.____.7.09.009" />

<script>
  $(document).ready(function(){
     $("#numero-processo").inputmask("9999999-99.9999.7.0\\9.00\\9");
  });
</script>

Вот jsfiddle: https://jsfiddle.net/3kyau2p8/

0 голосов
/ 19 сентября 2018

Обычно вы решаете эту проблему, оставляя фиксированную часть за пределами ввода (если пользователь не должен изменять ее, она более эргономична, если на самом деле ее нет в изменяемой части).

<input type="text" />.7.09.009

Вы можете сделатьэто лучше с некоторыми css, и вам придется добавить его в JS или на языке, который вы используете для обработки данных.Так что, может быть, что-то вроде этого:

<div class="mask_field" addendum=".7.09.009"><input type="text" />.7.09.009</div>

Может быть проще работать с.

...