Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Почему не работает функция проверки на символы? (https://javascript.ru/forum/dom-window/50201-pochemu-ne-rabotaet-funkciya-proverki-na-simvoly.html)

Webtest 16.09.2014 16:25

Почему не работает функция проверки на символы?
 
Подскажите, вот написал функцию, почему она не выводит 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);

Safort 16.09.2014 16:39

Webtest,
а что говорит консоль? И содержимое функции check нам не известно, а осенью телепатические способности ухудшаются.

Webtest 16.09.2014 16:47

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;
}

Safort 16.09.2014 17:12

Webtest,
функция check ожидает на вход 1 аргумент типа массив, а ты передаёшь ей аж 16 аргументов, которые совсем не массивы.

Rise 16.09.2014 17:14

Webtest,
function validatePhone(phone){
	return /^[\d\-\(\)\+\s]+$/.test(phone);
}

Webtest 16.09.2014 17:27

Rise, а можете пояснить как проверяет даннная регулярка?
^[\d\-\(\)\+\s]+$
Т.е. она проверяет строку на наличие символов: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '(', ')', '+', ' '] ?

Webtest 16.09.2014 17:34

Rise, спасибо!

kostyanet 16.09.2014 20:28

ТС, вам на отсутствие надо проверять. Обычно просто считают сколько там цифр, а все остальное сделает формат.

Допустим вы хотите чтобы давали 10 цифр, в федеральном в том числе городские, то есть с кодом - значит 10, если в вашем селе 5 - значит 5, или там тире 7.

Получив цифры можете их даже как число сохранить, или сразу отформатировать.

Интегрально для деловых контактов код города мастхэв, так что считайте на 10.

Кстати, аргументы же можно передавать навалом и в ява-скриптах? То есть определяем

function check() ...

а внутри получаем массив из того что затем вписали в аргументы. Или нет?


Часовой пояс GMT +3, время: 16:45.