Найти спецификатор c di git в номере поля ввода в Javascript - PullRequest
1 голос
/ 27 мая 2020

Я работаю над приложением-конвертером Binary2Decimal, где, когда пользователь вводит в поле ввода значения, отличные от 0 и 1, при нажатии на преобразование он должен предупреждать пользователя о вводе действительного двоичного числа.

Ниже показано мой код:


const binary = document.querySelector('.decimalConvertor__binary--bin');
const decimal = document.querySelector('.decimalConvertor__decimal--dec');
const submit = document.querySelector('.decimalConvertor__submit--sub');

submit.addEventListener('click', e => {
  const bin = binary.value;
  if(bin !== '' && ' ') {
    if(bin.length <=8) {
      let dec = 0;

    for (let i = bin.length-1; i >=0; i--) {
      dec += parseInt(bin[i]) * Math.pow(2, bin.length - 1 - i);
    }
    decimal.value = dec
    }else {
      alert('enter less than 8 numbers')
    }
  }else {
    alert('Please enter valid binary number')
  } 
});

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Вы можете использовать для этой цели регулярное выражение: /^[0-1]*$/ будет проверять только 0 и 1. Вы можете использовать regex.test(bin)

submit.addEventListener('click', e => {
    regex = /^[0-1]*$/;
    const bin = binary.value;
    if(bin && regex.test(bin)) {
        if(bin.length <= 8) {
            let dec = 0;
            for (let i = bin.length-1; i >=0; i--) {
                dec += parseInt(bin[i]) * Math.pow(2, bin.length - 1 - i);
            }
            decimal.value = dec
        }
        else {
            alert('enter less than 8 numbers')
        }
    }
    else {
        alert('Please enter valid binary number')
    } 
});

PS: В вашем коде есть еще одна ошибка. Внутри предложения if вы написали bin !== '' && ' ', что всегда верно, когда bin !== '', что означает, что && ' ' избыточен.

1 голос
/ 27 мая 2020

попробуйте это, он использует регулярное выражение, чтобы проверить, содержит ли строка числа, отличные от 1 и 0, если да, то показывает предупреждение для ввода допустимого двоичного числа:

var re = new RegExp("([23456789])");

submit.addEventListener('click', e => {
  const bin = binary.value;
  if(bin && !re.test(bin)) {
    if(bin.length <=8) {
      let dec = 0;

    for (let i = bin.length-1; i >=0; i--) {
      dec += parseInt(bin[i]) * Math.pow(2, bin.length - 1 - i);
    }
    decimal.value = dec
    }else {
      alert('enter less than 8 numbers')
    }
  }else {
    alert('Please enter valid binary number')
  } 
});

Вот веб-сайт где вы можете создавать регулярные выражения, и он покажет вам их объяснение: https://regexr.com/. Введите здесь регулярное выражение для объяснения!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...