Как я уже говорил в комментариях, ваш подход к этой проблеме вызовет гораздо больше проблем, когда дело касается международных и / или сервисных номеров. Лучшим подходом было бы использовать регулярные выражения. Имейте в виду, однако, что не существует «идеального» подхода к этому.
Следующий код позволяет вам определить минимальную и максимальную длину, если вы все равно хотите это сделать, но это не обязательно (если вы хочу быть осторожным):
function CheckPhone(str, min = 1, max = 100) {
// If no phone number given, just return valid
if(str.length < 1){
return "valid";
}
// Reasonably safe regular expression for phone numbers
var regex = new RegExp(/^(\(?\+?[0-9]*\)?)?[0-9_\- \(\)]*$/, 'g');
// Check for expected length
if(str.length < min || str.length > max) {
return "Your phone number should be between "+min+" and "+max+" characters long.";
}
// Check for valid phone number
if(regex.test(str)) {
return "valid";
} else {
return "Your phone number does not appear to be valid";
}
}
var result = CheckPhone("+001234567890", 5, 15); // Minimum 5, maximum 15 characters
var example = CheckPhone("+001234567890"); // No minimum or maximum length given
if(result != "valid"){
document.getElementById("errorPhone").innerHTML = result;
} else {
// valid number given, handle accordingly
}