Проверка номера телефона JS - соответствие строк - PullRequest
0 голосов
/ 27 ноября 2018

Все, что мне нужно сделать, это проверить, содержит ли входные данные какое-либо значение из данного массива.По какой-то причине он всегда возвращает true;

document.querySelector('#phonenumber').addEventListener('change', function (e) {
    let alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
    let target = e.target.value;
    let splittedTarget = target.split('');

    console.log(splittedTarget, alphabet)

    if (alphabet.indexOf(splittedTarget) > -1) {
      alert('there is not');
    } else {
      alert('there is');
    }
});

Ссылка Fiddle: https://jsfiddle.net/et5avosu/

Ответы [ 3 ]

0 голосов
/ 27 ноября 2018

Вы можете использовать .some() для ввода символов:

const alphaInInput = !splittedTarget.some(elem => alphabet.indexOf(elem) > -1);

alphaInInput будет boolean.Если ваш ввод содержит символ из строки alphabet, то это будет true, если нет, то будет false.

См. Рабочий пример ниже:

document.querySelector('#phonenumber').addEventListener('change', function (e) {
    let alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; // Remove .split() (no need for array)
    let target = e.target.value;
    let splittedTarget = target.split('');
		
    const alphaInInput = splittedTarget.some(elem => alphabet.indexOf(elem) > -1);
   
    // console.log(splittedTarget, alphabet)
    if (!alphaInInput) {
      alert('there is not');
    } else {
      alert('there is');
    }
  });
<input id="phonenumber" />

Или вы можете использовать regex, используя следующий шаблон /[A-Za-z]/g, а затем используя .test(), чтобы увидеть, соответствует ли ваш ввод шаблону.

Примечание : /[A-Za-z]/g проверяет символы от A до Z и от a до z, т. Е. Что содержит строка алфавита:

document.querySelector('#phonenumber').addEventListener('change', function (e) {
    let inputStr = e.target.value;
    let regex = /[A-Za-z]/g;
    let alphaInInput = regex.test(inputStr);
   
    if (!alphaInInput) {
      alert('there is not');
    } else {
      alert('there is');
    }
  });
<input id="phonenumber" />
0 голосов
/ 27 ноября 2018

Используйте это вместо этого, я проверил, и это сработало

 document.querySelector('#phonenumber').addEventListener('change', function (e) {

    let alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
    let target = e.target.value;
    let splittedTarget = target.split('');

    if(splittedTarget.every(r => alphabet.indexOf(r) < 0)){
        alert('only numbers');
    } else {
          alert('there is letter');
    }
  });
0 голосов
/ 27 ноября 2018

Array<String>.indexOf(Array) всегда -1, потому что список String s не содержит Array.Вам нужно использовать какой-то другой метод для проверки ввода.

...