Inquiridor
Testar variável JavaScript

Discussão Geral
-
Uso VS2010, AspNet4, C#, JavaCcript
No lado cliente usando JavaScript, estou tentando simplificar (reduzir) um código que tenho, para verificar se uma variável possui ou não algum valor, estou fazendo assim:
---------------------
var nome = $("#txtNome").val();
if (!txtNome || txtNome== "" || txtNome== null || txtNome == "undefined")
{
alert("Informe o Nome");
return false;
}
--------------------
O código acima funciona, mas tem como simplificar esses testes de forma que funcione?
Álvaro Luiz
- Tipo Alterado Giovani Cr segunda-feira, 27 de janeiro de 2014 18:43
Todas as Respostas
-
-
Álvaro,
Para campos em que o valor for uma "string", escreva seu "if" deste modo:
if (nome.trim().length > 0) { alert('Preencha o nome !'); nome.focus(); return false; }
Veja o link:
http://msdn.microsoft.com/pt-br/library/ie/ff679971(v=vs.94).aspx
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil" -
-
Está errada a função acima. Se o campo tem tamanho maior que 0 então está preenchido. Não deve disparar o alerta nesse caso nem retornar false
Álvaro,
O Tiago está certo. O correto é "==".
Não esqueça de marcar todos os posts que ajudaram na sua solução como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil" -
-
Voces concordam comigo que muitos usuários "ainda" usam o windows xp?! Então a função deve funcionar no ie =>6. Se não me engano a solução apresentada funciona apenas no IE => 9
Álvaro Luiz
Álvaro,
Concordo, para Web sites e Hot sites ainda é necessário fazem todo o desenvolvimento e testes à partir do IE6.
Apenas adaptei à referência para o objeto "txtNome" .
var nome = document.forms[0].txtNome;
if (nome.trim().length > 0) {
alert('Preencha o nome !');
nome.focus();
return false;
}O post deve ser realizado somente no fim da função de validação, por este motivo é colocado o "return false".
Não esqueça de marcar todos os posts que ajudaram na sua solução como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil" -
Durval não daria para fazer assim também, simplificando mais ainda para o Álvaro?
if (document.GetElementByID("<% txtNome.ClientID>").trim().lenght == 0){ alert("Preencha o Nome!"); document.GetElementByID("<% txtNome.ClientID>").focus(); return false; }
Se tiver algum item fora no ID me desculpe fiz direto aqui no editor.
Abraço.
-
Durval não daria para fazer assim também, simplificando mais ainda para o Álvaro?
if (document.GetElementByID("<% txtNome.ClientID>").trim().lenght == 0){ alert("Preencha o Nome!"); document.GetElementByID("<% txtNome.ClientID>").focus(); return false; }
Se tiver algum item fora no ID me desculpe fiz direto aqui no editor.
Abraço.
Fernando,
Esta também é uma boa idéia, a diferença neste caso é que parte do javascript é gerado no servidor antes de devolver à requisição do usuário (existe um processamento prévio).
No script que eu indiquei o javascript é estático, ou seja, ele simplesmente é copiado para interpretação do browser do usuário e pode ser isolado em um arquivo .js para distribuir o carregamento do conteúdo.
Dependendo da configuração do browser, isto pode agilizar o carregamento da página, mas também pode se tornar um problema por gerar e utilizar constantemente o cache do "temporary internet files". Nem sempre que o desenvolvedor atualizar o arquivo .js ele será atualizado no browser do usuário (mas este é outro problema).
Em cada situação, podemos utilizar um ou outro script. Ambos estão corretos.
Abraços,
Durval RamosMicrosoft Partner | MTA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil" -
-
Usuários de IE6 representa menos de 0.1%.
Pra mim, um número absolutamente insignificante.
http://www.modern.ie/ie6countdown
http://www.w3schools.com/browsers/browsers_explorer.asp
Mas, cada um cada um
Tiago,
Excelente levantamento! A tendência, com o fim do suporte da MS ao Windows XP é que o IE6 desapareça.
Talvez, a realidade do Álvaro ainda precise desta análise e tratamento de código.
Obrigado por compartilhar os links. Muito boa análise.
Abraços,
Durval RamosMicrosoft Partner | MTA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"