Какую ошибку допустил в данном случае?

Ссылка скопирована
1 ответ

Консоль ничего не выдаёт...

function cc_format(value) {   var v = value.replace(/s+/g, '').replace(/[^0-9]/gi, '')   var matches = v.match(/d{4,16}/g);   var match = matches && matches[0] || ''   var parts = []   for (i=0, len=match.length; i<len; i+=4) {     parts.push(match.substring(i, i+4))   }   if (parts.length) {     return parts.join(' ')   } else {     return value   } }  /* такой вариант не работает. никаких ошибок в консоле нет. */ onload = function() {     var inputus = document.querySelectorAll(".cardNumber");     for (i = 0; i < inputus.length; i++) {       inputus[i].addEventListener.oninput = function() {         this.value = cc_format(this.value)       }     } } /* такой вариант не работает. никаких ошибок в консоле нет. */  function checkDigit(event) {     var code = (event.which) ? event.which : event.keyCode;      if ((code < 48 || code > 57) && (code > 31)) {         return false;     }      return true; }

function cc_format(value) { var v = value.replace(/s+/g, '').replace(/[^0-9]/gi, '') var matches = v.match(/d{4,16}/g); var match = matches && matches[0] || '' var parts = [] for (i=0, len=match.length; i<len; i+=4) { parts.push(match.substring(i, i+4)) } if (parts.length) { return parts.join(' ') } else { return value } } /* такой вариант не работает. никаких ошибок в консоле нет. */ onload = function() { var inputus = document.querySelectorAll(".cardNumber"); for (i = 0; i < inputus.length; i++) { inputus[i].addEventListener.oninput = function() { this.value = cc_format(this.value) } } } /* такой вариант не работает. никаких ошибок в консоле нет. */ function checkDigit(event) { var code = (event.which) ? event.which : event.keyCode; if ((code < 48 || code > 57) && (code > 31)) { return false; } return true; }

Дополнительно:

А где объявление i? Попробуйте так:

for (let i = 0, len = match.length; i < len; i += 4) {   parts.push(match.substring(i, i + 4)); }

for (let i = 0, len = match.length; i < len; i += 4) { parts.push(match.substring(i, i + 4)); }

Очень интересная конструкция addEventListener.oninput = function(). Попробуйте так:

inputus[i].addEventListener('input', () => {   this.value = cc_format(this.value); });

inputus[i].addEventListener('input', () => { this.value = cc_format(this.value); });

UPD: не ожидал обнаружить this, соответственно использовал стрелочную функцию по дефолту (а у нее нет собственного this). Вариант с this:

for (let i = 0; i < inputus.length; i++) {   inputus[i].addEventListener('input', function() {   this.value = cc_format(this.value); });

for (let i = 0; i < inputus.length; i++) { inputus[i].addEventListener('input', function() { this.value = cc_format(this.value); });

  • второй вариант работает, но только на один input. я пытаюсь обработать несколько input в цикле, чтобы для каждого вызвать функцию форматирования. ведь querySelectorAll получает несколько node элементов, но их нужно обрабатывать в цикле
  • на каждый input я повесил класс cardNumber
  • Aison,

    второй вариант работает, но только на один input

    Обновил ответ.

    ведь querySelectorAll получает несколько node элементов, но их нужно обрабатывать в цикле

    Верно.

  • Михаил Р., Спасибо!

Ответы:

addEventListener.oninput

wtf?

inputus[i].addEventListener('input', function() {   this.value = cc_format(this.value); });

inputus[i].addEventListener('input', function() { this.value = cc_format(this.value); });

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Сергей Миронов Ответ

Для решения проблемы с подсветкой синтаксиса кода всех языков программирования на сайте stackoverflow.com (или любом другом сайте), вам необходимо использовать тег

 вместо тегов ```язык программирования``` или других подобных тегов.

Например, если вам нужно выделить синтаксис кода на PHP, вы можете использовать следующий синтаксис:

 

Этот код позволит правильно отобразить синтаксис PHP на странице и улучшит читаемость вашего ответа. Таким образом, вы сможете помочь другим пользователям лучше понять ваше решение и избежать ошибок при копировании кода.

Используя тег

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

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно