Um índice abrangente para a validação de números de telefone
- 1-234-567-8901
- 1-234 -67-8901 x1234
- 1 -34 -67-8901 ext1234
- 1 (234) 567-8901
- 1.234.567.8901
- 1/234/567/8901
- 12345678901
30 answers
+44 (0) ...
quando solicitado a usar o prefixo de marcação internacional (neste caso específico, você deve descartar o (0)
inteiramente).
Depois, acabas com valores como:
12345678901
12345678901x1234
345678901x1234
12344678901
12345678901
12345678901
12345678901
+4112345678
+441234567890
Então, quando você mostrar, reformate para o seu coração conteúdo. por exemplo
1 (234) 567-8901
1 (234) 567-8901 x1234
^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?$
.*
Se o utilizador quiser dar-lhe o número de telefone, confie nele para acertar. Se ele não quiser dar-lhe, em seguida, forçá-lo a entrar um número válido, ou enviá-lo para o site de um concorrente ou fazê-lo entrar uma cadeia aleatória que se encaixa no seu regex. Posso até sentir-me tentado a procurar o número de uma linha de sexo premium e entrar nisso em vez disso.
Eu também consideraria qualquer uma das seguintes entradas válidas num site:
"123 456 7890 until 6pm, then 098 765 4321"
"123 456 7890 or try my mobile on 098 765 4321"
"ex-directory - mind your own business"
Por exemplo, reconhecerá que:
15555555555
É um número possível, mas não um número válido. Também apoia países fora dos EUA.
Destaques de funcionalidade:
- analisar/formatar/validar números de telefone para todos os países / regiões do mundo.
- - Get o tipo do número baseado no próprio número; capaz de distinguir linha fixa, móvel, sem portagem, taxa de prémio, custo compartilhado, VoIP e números pessoais (sempre que possível).
- - Obtém um nível de confiança sobre se dois números podem ser iguais.
-
getExampleNumber
/getExampleNumberByType
- fornece números de exemplo válidos para todos os países/regiões, com a opção de especificar que tipo de número de telefone exemplo é necessário. - - Adivinhar rapidamente se um número é possível número de telefone usando apenas a informação de comprimento, muito mais rápido do que uma validação completa.
-
isValidNumber
- validação completa de um número de telefone para uma região com informação de comprimento e prefixo. -
AsYouTypeFormatter
- Formata números de telefone em tempo real quando os utilizadores entram em cada dígito. -
findNumbers
- encontra números na entrada de texto. -
PhoneNumberOfflineGeocoder
- fornece informações geográficas relacionadas com um número de telefone.
Exemplos
O maior problema com o número de telefone a validação é muito culturalmente dependente.-
América
-
(408) 974–2042
é um válido número dos EUA -
(999) 974–2042
is not a valid US number
-
-
Austrália
-
0404 999 999
é um válido Número Australiano -
(02) 9999 9999
também é um válido Número Australiano -
(09) 9999 9999
is not a valid Australian number
-
Uma expressão regular é bom para verificar o formato de um número de telefone, mas ele realmente não vai ser capaz de verificar a validade de um número de telefone.
Sugiro saltar uma simples expressão regular para testar o seu número de telefone e usar uma biblioteca como a do Google.libphonenumber
( link to GitHub project) .
Apresento-vos a libphonenumber!
Usando um dos seus exemplos mais complexos, 1-234-567-8901 x1234
, obtém os seguintes dados de libphonenumber
(link online demonstração):
Validation Results
Result from isPossibleNumber() true
Result from isValidNumber() true
Formatting Results:
E164 format +12345678901
Original format (234) 567-8901 ext. 123
National format (234) 567-8901 ext. 123
International format +1 234-567-8901 ext. 123
Out-of-country format from US 1 (234) 567-8901 ext. 123
Out-of-country format from CH 00 1 234-567-8901 ext. 123
Por isso, não só você aprende se o número de telefone é válido (o que é), como também obtém uma formatação consistente do número de telefone no seu local.
Como um bônus, libphonenumber
tem um número de conjuntos de dados para verificar a validade dos números de telefone, bem como, para a verificação de um número como +61299999999
(a versão internacional do (02) 9999 9999
) retorna como um número válido com formatação:
Validation Results
Result from isPossibleNumber() true
Result from isValidNumber() true
Formatting Results
E164 format +61299999999
Original format 61 2 9999 9999
National format (02) 9999 9999
International format +61 2 9999 9999
Out-of-country format from US 011 61 2 9999 9999
Out-of-country format from CH 00 61 2 9999 9999
A Libphonenumber também lhe dá muitos benefícios adicionais, como agarrar a localização que o número de telefone é detectado como sendo, e também obter a informação do fuso horário a partir do número de telefone:
PhoneNumberOfflineGeocoder Results
Location Australia
PhoneNumberToTimeZonesMapper Results
Time zone(s) [Australia/Sydney]
Mas o número de telefone australiano é inválido.((09) 9999 9999
) devolve que não é um número de telefone válido.
Validation Results
Result from isPossibleNumber() true
Result from isValidNumber() false
A versão do Google tem código para Java e Javascript, mas as pessoas também implementaram bibliotecas para outras linguagens que usam o conjunto de dados de números de telefone do Google i18n:
- PHP : https://github.com/giggsey/libphonenumber-for-php
- Python: https://github.com/daviddrysdale/python-phonenumbers
- Ruby: https://github.com/sstephenson/global_phone
- C#: https://github.com/twcclegg/libphonenumber-csharp
- Objectivo-C: https://github.com/iziz/libPhoneNumber-iOS
- JavaScript : https://github.com/ruimarinho/google-libphonenumber
A menos que tenhas a certeza de que vais estar sempre a aceitar números de um local, e eles vão estar sempre num formato, sugiro fortemente que Não escrevas o teu próprio código para isto, e que uses o libphonenumber para validar e mostrar números de telefone.
/^(?:(?:\(?(?:00|\+)([1-4]\d\d|[1-9]\d?)\)?)?[\-\.\ \\\/]?)?((?:\(?\d{1,}\)?[\-\.\ \\\/]?){0,})(?:[\-\.\ \\\/]?(?:#|ext\.?|extension|x)[\-\.\ \\\/]?(\d+))?$/i
Isto corresponde:
- (+351) 282 43 50 50
- 90191919908
- 555-8909
- 001 6867684
- 001 6867684x1
- 1 (234) 567-8901
- 1-234-567-8901 x1234
- 1-234-567-8901 ext1234
- 1-234 567.89/01 ext.1234
- 1(234)5678901x1234
- (123)8575973
- (0055)(123)8575973
Por $ n, poupa-se:
- indicador do País
- Número de Telefone
- extensão
Podes testá-lo em https://www.regexpal.com/?fam=99127
1?\W*([2-9][0-8][0-9])\W*([2-9][0-9]{2})\W*([0-9]{4})(\se?x?t?(\d*))?
Aqui está um script perl para testá-lo. Quando você combinar, $1 contém o código da Área, $2 e $3 contêm o número de telefone, e $5 contém a extensão. O meu script de teste descarrega um ficheiro da internet e imprime todos os números de telefone nele.
#!/usr/bin/perl
my $us_phone_regex =
'1?\W*([2-9][0-8][0-9])\W*([2-9][0-9]{2})\W*([0-9]{4})(\se?x?t?(\d*))?';
my @tests =
(
"1-234-567-8901",
"1-234-567-8901 x1234",
"1-234-567-8901 ext1234",
"1 (234) 567-8901",
"1.234.567.8901",
"1/234/567/8901",
"12345678901",
"not a phone number"
);
foreach my $num (@tests)
{
if( $num =~ m/$us_phone_regex/ )
{
print "match [$1-$2-$3]\n" if not defined $4;
print "match [$1-$2-$3 $5]\n" if defined $4;
}
else
{
print "no match [$num]\n";
}
}
#
# Extract all phone numbers from an arbitrary file.
#
my $external_filename =
'http://web.textfiles.com/ezines/PHREAKSANDGEEKS/PnG-spring05.txt';
my @external_file = `curl $external_filename`;
foreach my $line (@external_file)
{
if( $line =~ m/$us_phone_regex/ )
{
print "match $1 $2 $3\n";
}
}
Editar:
Pode mudar \W* para \s*\W?no regex para apertar um pouco. Eu não estava pensando no regex em termos de, digamos, validar a entrada do usuário em um formulário quando eu o escrevi, mas esta mudança torna possível usar o regex para esse propósito.'1?\s*\W?\s*([2-9][0-8][0-9])\s*\W?\s*([2-9][0-9]{2})\s*\W?\s*([0-9]{4})(\se?x?t?(\d*))?';
- iniciar a expressão:
/^
- se quiser necessitar de espaço, use:
[\s]
ou\s
- se quiser necessitar de parêntesis, use:
[(]
e[)]
. Usar\(
e\)
é feio e pode tornar as coisas confusas. - se quiser que algo seja opcional, coloque um
?
depois dele - se quiser um hífen, escreva
-
ou[-]
. Se você não colocar primeiro ou último em uma série de outros personagens, no entanto, você pode precisar escapar:\-
- se quiser aceitar escolhas diferentes num espaço, coloque parêntesis à volta das opções:
[-.\s]
irá necessitar de um hífen, período ou espaço. Um ponto de interrogação após o último intervalo tornará facultativas todas as opções para esse efeito. ranhura. -
\d{3}
requer um número de 3 dígitos: 000-999. Estenografia para[0-9][0-9][0-9]
. -
[2-9]
é necessário um dígito 2-9 para esse slot. -
(\+|1\s)?
: aceitar um " mais "ou um 1 e um espaço (caracter de tubo,|
, é" ou"), e torná-lo opcional. O sinal de" mais " deve ter escapado. - se quiser que os números específicos correspondam a um 'slot', indique-os:
[246]
irá necessitar de um 2, 4 ou 6.[77|78]
será necessário 77 ou 78. -
$/
: terminar a expressão
Eu escrevi simpliest (embora eu não precisasse de ponto nele).
^([0-9\(\)\/\+ \-]*)$
Tal como mencionado abaixo, verifica apenas os caracteres, não a sua estrutura/ordem
Note que a remoção de caracteres {[[0]} não funciona para um estilo de escrita de números do Reino Unido que é comum: +44 (0) 1234 567890
o que significa marcar ou o número internacional:+441234567890
ou no mostrador do Reino Unido01234567890
Se você só quer verificar que você não tem lixo aleatório no campo (isto é, a partir de spammers forma) este regex deve fazer muito bem:
^[0-9+\(\)#\.\s\/ext-]+$
Note que ele não tem nenhuma regra especial para quantos dígitos, ou quais números são válidos nesses dígitos, ele apenas verifica que apenas dígitos, parêntesis, traços, mais, espaço, Libra, asterisco, período, vírgula, ou as letras e
, x
, t
estão presentes.
Deve ser compatível com números internacionais e localização formato. Você prevê alguma necessidade de permitir suportes quadrados, encaracolados ou angulados para algumas regiões? (atualmente eles não estão incluídos).
Se você quiser manter as regras por dígito (como nos códigos de área e prefixos (códigos de troca) dos EUA deve cair na faixa de 200-999) bem, boa sorte para você. A manutenção de um conjunto complexo de regras que poderia estar desactualizado em qualquer momento do futuro por qualquer país do mundo não parece divertido.
E enquanto se tira todos / a maioria dos caracteres não numéricos pode funcionar bem no lado do servidor (especialmente se você está planejando passar esses valores para um dialer), você pode não querer alterar a entrada do usuário durante a validação, particularmente se você quiser que eles façam correções em outro campo.
^\(*\+*[1-9]{0,3}\)*-*[1-9]{0,3}[-. /]*\(*[2-9]\d{2}\)*[-. /]*\d{3}[-. /]*\d{4} *e*x*t*\.* *\d{0,4}$
Funciona para estes formatos de números:
1-234-567-8901
1-234-567-8901 x1234
1-234-567-8901 ext1234
1 (234) 567-8901
1.234.567.8901
1/234/567/8901
12345678901
1-234-567-8901 ext. 1234
(+351) 282 433 5050
Certifique-se de usar bandeiras globais e multi-linhas para se certificar.
Ligação: http://www.regexr.com/3bp4b
Se está a falar de validação do formulário, a expressão regular para validar o significado correcto, bem como os dados correctos, vai ser extremamente complexa devido às diferentes normas de país e fornecedor. Também será difícil manter-se actualizado.
Eu interpreto a pergunta como Procurando um padrão amplamente válido, que pode não ser internamente consistente - por exemplo, ter um conjunto válido de números, mas não validando que a linha de tronco, troca, etc. ao padrão válido para o país prefixo de código.
A América do Norte é simples, e para a internacional prefiro usar um padrão 'idiomático' que cobre as formas como as pessoas especificam e lembram os seus números:
^((((\(\d{3}\))|(\d{3}-))\d{3}-\d{4})|(\+?\d{2}((-| )\d{1,8}){1,5}))(( x| ext)\d{1,5}){0,1}$
O padrão norte-americano garante que se um parêntesis for incluído ambos são. As contas internacionais para um inicial opcional " + " e o código do país. Depois disso, estás no idioma. As correspondências válidas seriam be:
(xxx)xxx-xxxx
(xxx)-xxx-xxxx
(xxx)xxx-xxxx x123
12 1234 123 1 x1111
12 12 12 12 12
12 1 1234 123456 x12345
+12 1234 1234
+12 12 12 1234
+12 1234 5678
+12 12345678
A minha tentativa de um regex sem restrições:
/^[+#*\(\)\[\]]*([0-9][ ext+-pw#*\(\)\[\]]*){6,45}$/
Aceita:
+(01) 123 (456) 789 ext555
123456
*44 123-456-789 [321]
123456
123456789012345678901234567890123456789012345
*****++[](][((( 123456tteexxttppww
Rejeitados:
mob 07777 777777
1234 567 890 after 5pm
john smith
(empty)
1234567890123456789012345678901234567890123456
911
Cabe-lhe a si higienizá-lo para exibição. Depois de validar Pode ser um número.
Este é um padrão de expressão Regular simples para os números de telemóvel das Filipinas:
((\+[0-9]{2})|0)[.\- ]?9[0-9]{2}[.\- ]?[0-9]{3}[.\- ]?[0-9]{4}
Ou
((\+63)|0)[.\- ]?9[0-9]{2}[.\- ]?[0-9]{3}[.\- ]?[0-9]{4}
Irá igualar estes:
+63.917.123.4567
+63-917-123-4567
+63 917 123 4567
+639171234567
09171234567
O primeiro corresponde a qualquer código de país de dois dígitos, enquanto o segundo corresponde exclusivamente ao código de país das Filipinas.
Testa aqui: http://refiddle.com/1ox
Na minha opinião, a solução mais elegante é validar um comprimento mínimo, nada mais.
Você vai ter dificuldade em lidar com números internacionais com um único / simples regex, veja este post sobre as dificuldades dos números de telefone internacionais (e mesmo norte-americanos).
Você vai querer analisar os primeiros dígitos para determinar qual é o código do país, em seguida, agir de forma diferente com base no país.
Além disso - a lista que deu não inclui outro formato comum nos EUA-deixando de fora o 1 inicial. A maioria dos telemóveis nos EUA não o exigem., e vai começar a desconcentrar a geração mais jovem, a não ser que tenham ligado internacionalmente.
Identificaste correctamente que é um problema complicado...-Adam
Depois de ler estas respostas, parece que não houve uma expressão regular simples que possa processar através de um monte de texto e obter números de telefone em qualquer formato (incluindo internacional com e sem o sinal de mais).
Aqui está o que eu usei para um projeto cliente recentemente, onde tivemos que converter todos os números de telefone em qualquer formato para Tel: links.
Até agora, tem funcionado com tudo o que lhe atiraram, mas se surgirem erros, vou actualizar isto. resposta.Regex:
/(\+*\d{1,})*([ |\(])*(\d{3})[^\d]*(\d{3})[^\d]*(\d{4})/
Função PHP para substituir todos os números de telefone por tel: links (no caso de alguém estar curioso):
function phoneToTel($number) {
$return = preg_replace('/(\+*\d{1,})*([ |\(])*(\d{3})[^\d]*(\d{3})[^\d]*(\d{4})/', '<a href="tel:$1$3$4$5">$1 ($3) $4-$5</a>', $number); // includes international
return $return;
}
A seguinte expressão regular captará combinações de Números e caracteres amplamente utilizadas numa variedade de formatos globais de números de telefone:
/^\s*(?:\+?(\d{1,3}))?([-. (]*(\d{3})[-. )]*)?((\d{3})[-. ]*(\d{2,4})(?:[-.x ]*(\d+))?)\s*$/gm
Positivo:
+42 555.123.4567
+1-(800)-123-4567
+7 555 1234567
+7(926)1234567
(926) 1234567
+79261234567
926 1234567
9261234567
1234567
123-4567
123-89-01
495 1234567
469 123 45 67
89261234567
8 (926) 1234567
926.123.4567
415-555-1234
650-555-2345
(416)555-3456
202 555 4567
4035555678
1 416 555 9292
Negativo:
926 3 4
8 800 600-maçã
Fonte Original: http://www.regexr.com/38pvb
^\d?(?:(?:[\+]?(?:[\d]{1,3}(?:[ ]+|[\-.])))?[(]?(?:[\d]{3})[\-/)]?(?:[ ]+)?)?(?:[a-zA-Z2-9][a-zA-Z0-9 \-.]{6,})(?:(?:[ ]+|[xX]|(i:ext[\.]?)){1,2}(?:[\d]{1,5}))?$
Eu acredito no número : Telefone:: US e Regexp::Common (particularmente a fonte de Regexp::Common::URI: RFC2806) Perl modules could help.
A questão provavelmente deve ser especificada com um pouco mais de detalhe para explicar o propósito de validar os números. Por exemplo, 911 é um número válido nos EUA, mas 911x não é para qualquer valor de X. Isso é de modo que a companhia de telefone pode calcular quando você está feito de marcação. Existem várias variações sobre este problema. Mas a tua regex não verifica a parte do Código da área, por isso, isso não parece ser uma preocupação.
Como Validar endereços de E-mail, mesmo que tenha um resultado válido, Não pode saber se é atribuído a alguém até o experimentar.
Se está a tentar validar a entrada do utilizador, porque não normalizar o resultado e acabar com ele? Se o usuário colocar em um número que você não pode reconhecer como um número válido, tanto salvá-lo como intrutted ou strip para fora de caracteres indisponíveis. O número:: telefone:: Normalize O módulo Perl pode ser uma fonte de inspiração.
Para uma análise mais aprofundada, pode subscrever um dos muitos fornecedores que lhe dará acesso a uma base de dados de números válidos, bem como dizer-lhe se são telefones fixos ou móveis, desligados, etc. Custa dinheiro.
Faça uma substituição em caracteres de formatação e verifique a validade do telemóvel restante. Em PHP,
$replace = array( ' ', '-', '/', '(', ')', ',', '.' ); //etc; as needed
preg_match( '/1?[0-9]{10}((ext|x)[0-9]{1,4})?/i', str_replace( $replace, '', $phone_num );
Quebrar uma expressão complexa como esta pode ser igualmente eficaz, mas muito mais simples.
<?php
/*
string validate_telephone_number (string $number, array $formats)
*/
function validate_telephone_number($number, $formats)
{
$format = trim(ereg_replace("[0-9]", "#", $number));
return (in_array($format, $formats)) ? true : false;
}
/* Usage Examples */
// List of possible formats: You can add new formats or modify the existing ones
$formats = array('###-###-####', '####-###-###',
'(###) ###-###', '####-####-####',
'##-###-####-####', '####-####', '###-###-###',
'#####-###-###', '##########');
$number = '08008-555-555';
if(validate_telephone_number($number, $formats))
{
echo $number.' is a valid phone number.';
}
echo "<br />";
$number = '123-555-555';
if(validate_telephone_number($number, $formats))
{
echo $number.' is a valid phone number.';
}
echo "<br />";
$number = '1800-1234-5678';
if(validate_telephone_number($number, $formats))
{
echo $number.' is a valid phone number.';
}
echo "<br />";
$number = '(800) 555-123';
if(validate_telephone_number($number, $formats))
{
echo $number.' is a valid phone number.';
}
echo "<br />";
$number = '1234567890';
if(validate_telephone_number($number, $formats))
{
echo $number.' is a valid phone number.';
}
?>
Provavelmente estarias melhor se usasses uma entrada mascarada para isto. Dessa forma, os usuários só podem inserir números e você pode formatar como quiser. Eu não tenho certeza se isso é para uma aplicação web, mas se é que há um plugin jQuery muito Clique que oferece algumas opções para fazer isso.
Até analisam como mascarar as entradas dos números de telefone no tutorial."^(\\(?\\d\\d\\d\\)?)( |-|\\.)?\\d\\d\\d( |-|\\.)?\\d{4,4}(( |-|\\.)?[ext\\.]+ ?\\d+)?$"
Na pior das hipóteses, se o utilizador tivesse de retirar um número não formatado do ficheiro XML, continuariam a digitar os números no número do telemóvel 012345678x5
, Sem real razão para manter as coisas bonitas. Esse tipo de "RegEx" sairia algo assim para mim.
\d+ ?\w{0,9} ?\d+
01234467 extension 123456
01234567x123456
01234567890
Algumas expressões simples de perl podem ser:
@f = /(\d+)/g;
tr/0-9//dc;
Use o primeiro para manter os grupos de dígitos juntos, o que pode dar pistas de formatação. Use o segundo para atirar trivialmente todos os não-dígitos.
É uma preocupação que poderá ser necessário fazer uma pausa e depois introduzir mais teclas? Ou algo como 555-1212 (espere pelo sinal) 123? pattern="^[\d|\+|\(]+[\)|\d|\s|-]*[\d]$"
validateat="onsubmit"
Deve terminar com um dígito, pode começar com ( ou + ou um dígito, e pode conter + - (ou)
PHP
<?php
$pattern = "/^(083|086|085|086|087)\d{7}$/";
$phone = "087343266";
if (preg_match($pattern,$phone)) echo "Match";
else echo "Not match";
Há também uma solução JQuery nesse link.
Editar:
Solução JQuery:
$(function(){
//original field values
var field_values = {
//id : value
'url' : 'url',
'yourname' : 'yourname',
'email' : 'email',
'phone' : 'phone'
};
var url =$("input#url").val();
var yourname =$("input#yourname").val();
var email =$("input#email").val();
var phone =$("input#phone").val();
//inputfocus
$('input#url').inputfocus({ value: field_values['url'] });
$('input#yourname').inputfocus({ value: field_values['yourname'] });
$('input#email').inputfocus({ value: field_values['email'] });
$('input#phone').inputfocus({ value: field_values['phone'] });
//reset progress bar
$('#progress').css('width','0');
$('#progress_text').html('0% Complete');
//first_step
$('form').submit(function(){ return false; });
$('#submit_first').click(function(){
//remove classes
$('#first_step input').removeClass('error').removeClass('valid');
//ckeck if inputs aren't empty
var fields = $('#first_step input[type=text]');
var error = 0;
fields.each(function(){
var value = $(this).val();
if( value.length<12 || value==field_values[$(this).attr('id')] ) {
$(this).addClass('error');
$(this).effect("shake", { times:3 }, 50);
error++;
} else {
$(this).addClass('valid');
}
});
if(!error) {
if( $('#password').val() != $('#cpassword').val() ) {
$('#first_step input[type=password]').each(function(){
$(this).removeClass('valid').addClass('error');
$(this).effect("shake", { times:3 }, 50);
});
return false;
} else {
//update progress bar
$('#progress_text').html('33% Complete');
$('#progress').css('width','113px');
//slide steps
$('#first_step').slideUp();
$('#second_step').slideDown();
}
} else return false;
});
//second section
$('#submit_second').click(function(){
//remove classes
$('#second_step input').removeClass('error').removeClass('valid');
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
var fields = $('#second_step input[type=text]');
var error = 0;
fields.each(function(){
var value = $(this).val();
if( value.length<1 || value==field_values[$(this).attr('id')] || ( $(this).attr('id')=='email' && !emailPattern.test(value) ) ) {
$(this).addClass('error');
$(this).effect("shake", { times:3 }, 50);
error++;
} else {
$(this).addClass('valid');
}
function validatePhone(phone) {
var a = document.getElementById(phone).value;
var filter = /^[0-9-+]+$/;
if (filter.test(a)) {
return true;
}
else {
return false;
}
}
$('#phone').blur(function(e) {
if (validatePhone('txtPhone')) {
$('#spnPhoneStatus').html('Valid');
$('#spnPhoneStatus').css('color', 'green');
}
else {
$('#spnPhoneStatus').html('Invalid');
$('#spnPhoneStatus').css('color', 'red');
}
});
});
if(!error) {
//update progress bar
$('#progress_text').html('66% Complete');
$('#progress').css('width','226px');
//slide steps
$('#second_step').slideUp();
$('#fourth_step').slideDown();
} else return false;
});
$('#submit_second').click(function(){
//update progress bar
$('#progress_text').html('100% Complete');
$('#progress').css('width','339px');
//prepare the fourth step
var fields = new Array(
$('#url').val(),
$('#yourname').val(),
$('#email').val(),
$('#phone').val()
);
var tr = $('#fourth_step tr');
tr.each(function(){
//alert( fields[$(this).index()] )
$(this).children('td:nth-child(2)').html(fields[$(this).index()]);
});
//slide steps
$('#third_step').slideUp();
$('#fourth_step').slideDown();
});
$('#submit_fourth').click(function(){
url =$("input#url").val();
yourname =$("input#yourname").val();
email =$("input#email").val();
phone =$("input#phone").val();
//send information to server
var dataString = 'url='+ url + '&yourname=' + yourname + '&email=' + email + '&phone=' + phone;
alert (dataString);//return false;
$.ajax({
type: "POST",
url: "http://clients.socialnetworkingsolutions.com/infobox/contact/",
data: "url="+url+"&yourname="+yourname+"&email="+email+'&phone=' + phone,
cache: false,
success: function(data) {
console.log("form submitted");
alert("success");
}
});
return false;
});
//back button
$('.back').click(function(){
var container = $(this).parent('div'),
previous = container.prev();
switch(previous.attr('id')) {
case 'first_step' : $('#progress_text').html('0% Complete');
$('#progress').css('width','0px');
break;
case 'second_step': $('#progress_text').html('33% Complete');
$('#progress').css('width','113px');
break;
case 'third_step' : $('#progress_text').html('66% Complete');
$('#progress').css('width','226px');
break;
default: break;
}
$(container).slideUp();
$(previous).slideDown();
});
});