Почему не работает функция проверки на символы?
Подскажите, вот написал функцию, почему она не выводит phoneNumber?
function phoneCheck(phone) { var phoneNumber = true; if (!check(phone, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '(', ')', '+', ' ')) { phoneNumber = false; } return phoneNumber; } var phone = document.getElementById('input_phone').value; var test = phoneCheck(phone); alert(test); |
Webtest,
а что говорит консоль? И содержимое функции check нам не известно, а осенью телепатические способности ухудшаются. |
Safort, вот весь код, должно быть так, что если в инпуте есть символы, кроме тех, что я перечислил, то выводится phoneNumer = false, если нет, то true.
function check(phone) { var ok = true; for (var i = 0; i < phone.length; i++) { var chr = phone.charAt(i); var found = false; for (var j = 1; j < check.length; j++) { if (chr == check[j]) found = true; } if (!found) ok = false; } return ok; } function validatePhone(phone) { var phoneNumber = true; if (!check(phone, '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '(', ')', '+', ' ')) { phoneNumber = false; } return phoneNumber; } |
Webtest,
функция check ожидает на вход 1 аргумент типа массив, а ты передаёшь ей аж 16 аргументов, которые совсем не массивы. |
Webtest,
function validatePhone(phone){ return /^[\d\-\(\)\+\s]+$/.test(phone); } |
Rise, а можете пояснить как проверяет даннная регулярка?
^[\d\-\(\)\+\s]+$ Т.е. она проверяет строку на наличие символов: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '(', ')', '+', ' '] ? |
Rise, спасибо!
|
ТС, вам на отсутствие надо проверять. Обычно просто считают сколько там цифр, а все остальное сделает формат.
Допустим вы хотите чтобы давали 10 цифр, в федеральном в том числе городские, то есть с кодом - значит 10, если в вашем селе 5 - значит 5, или там тире 7. Получив цифры можете их даже как число сохранить, или сразу отформатировать. Интегрально для деловых контактов код города мастхэв, так что считайте на 10. Кстати, аргументы же можно передавать навалом и в ява-скриптах? То есть определяем function check() ... а внутри получаем массив из того что затем вписали в аргументы. Или нет? |
Часовой пояс GMT +3, время: 16:45. |