Изменить на маску функции

#javascript #jquery

#javascript #jquery

Вопрос:

У меня есть этот код ниже, он работает, как ожидалось, но мне нужно передать идентификатор каждого из них для работы. Как я могу превратить это в функцию для использования onKeyPress события:

 document.getElementById('inp').addEventListener('input', e => {
const val = e.target.value.replace(/D/g, '').replace(/^0*/, '').padStart(3, '0')
e.target.value = val.slice(0, -2).replace(/(d)(?=(d{3}) (?!d))/g, '$1.')   ','   val.slice(-2)
})
  

Я хотел бы перейти к использованию в качестве: function Mask(){ // code }

 <input asp-for="Frete" name="Frete" onKeyPress="return(Mask(this,'.',',',event))" class="form-control" />
  

Чтобы иметь возможность использовать function , поэтому мне нужно было бы создавать один за другим с помощью id

Комментарии:

1. Чего ты не понимаешь?

2. Что вы имеете в виду под «каждым»? Селектор идентификаторов будет соответствовать не более чем одному элементу

3. Таким образом, мне нужно передать идентификатор входных данных, и я создал функцию, которая уже передается во все формы, которые мне нужны. Я отредактирую вопрос.

4. @zer00ne Функция JavaScript определяется с помощью ключевого слова function, за которым следует имя, за которым следуют круглые скобки (). Имена функций могут содержать буквы, цифры, подчеркивания и знаки доллара (по тем же правилам, что и переменные). В круглых скобках могут содержаться имена параметров, разделенные запятыми: (параметр1, параметр2, …) Код, который будет выполняться функцией, помещается внутри фигурных скобок: {}

5. @Raymond В JS также есть функция arrow, которая используется в примере OP.

Ответ №1:

Здесь вы могли бы использовать event объект, подобный :

 document.getElementById('inp1').addEventListener('input', (e) => { Mask(e, 'inp1'); });
document.getElementById('inp2').addEventListener('input', (e) => { Mask(e, 'inp2'); });
document.getElementById('inp3').addEventListener('input', (e) => { Mask(e, 'inp3'); });

function Mask(e, id) {
  const target = document.getElementById(id);

  const val = target.value.replace(/D/g, '').replace(/^0*/, '').padStart(3, '0');
  target.value = val.slice(0, -2).replace(/(d)(?=(d{3}) (?!d))/g, '$1.')   ','   val.slice(-2);
}  
 <input id="inp1">
<input id="inp2">
<input id="inp3">  

Комментарии:

1. Ошибка: не удается прочитать ‘значение’ свойства null в Mask (Clientes.js:1001) в HTMLInputElement.onkeypress