Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

suzaco7

Validação em javacsript

Recommended Posts

Pessoal é correto fazer este tipo de validação.

if((f.txtValorPago.value != "0.00") && (f.txtValor.value != "0.00")){
			if(f.txtdtPgto.value == ""){
				alert("O campo data do pagamento precisa estar prrenchido!");
				return false;
			}
		}

Compara um campo <input type="text"> com uma string "0.00"

Agradeço a ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por isso mesmo, deixa eu explicar melhor.

Tenho uma lista com campos <input type="text"> dentro de um loop

Como está na validação se txtValorPago e txtValor forem diferentes de 0.00 ele exibiria um alert. para ser preenchida a data na mesma linha de onde foi digitado o valor.

E após isso ele faz um submit.

 

Me corrija se eu estiver errado, um javascript não é executado antes de tudo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Está sim, isso funciona.

Mas se o usuário digitar somente 0 ou 0000.0 ou algo do tipo a comparação retornaria false, não sendo portanto muito seguro.

 

O que você pode ali é verificar se o texto digitado é um número (deve haver alguma função assim no fórum), se for você utilizar o método eval para toná-lo um número realmente, e não mais uma string. Daí não importa a variação de 0 que o usuário coloque você irá trata-la.

 

//se for número
var numero = eval(f.txtValor.value)

//ifs...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo bem mais surgiu outro problema.

Como disse é uma lista de registro editáveis em forma de tabela.

Preciso fazer ele pegar todos os parâmetros do formulário na minha função javascript e eles estão vindo com indefinidos.

Tipo assim, sai do campo txtdtCompensacao, então é preciso ao mesmo tempo verificar se o campo txtValor é menor que txtdtCompensacao do mesmo registro.

Como posso de uma só vez passar todos os parâmetos para minha função quando eu clicar somente em um desses campos?

 

Minha chamada dentro do formulário está assim:

<input type="text" name="txtdtPgto" size="8" <%=sDisabled %> maxlength="10" value="<%=sDtPgto%>" onkeypress="AlterarValor(<%=oRsCadastro("codLancamento")%>,this.value,'pagamento');AjustaData(this);" onblur="validar_lancamento(<%=oRsCadastro("codLancamento")%>,this.value,'pagamento');">
<input type="text" name="txtdtCompensacao" size="8" <%=sDisabled %> maxlength="10" value="<%=sDtCompensacao%>" onkeypress="AlterarValor(<%=oRsCadastro("codLancamento")%>,this.value,'compensacao');AjustaData(this);" onblur="validar_lancamento(<%=oRsCadastro("codLancamento")%>,this.value,'compensacao');">
<input type="text" name="txtValor" size="6" maxlength="10" value="<%=FormataPreco(Trim("" & oRsCadastro("Valor")))%>" onkeypress="SomentePreco(this);AlterarValor(<%=oRsCadastro("codLancamento")%>,this.value,'valor');" onblur="validar_lancamento(<%=oRsCadastro("codLancamento")%>,this.value,'valor');">
<input type="text" name="txtValorPago" size="6" maxlength="10" value="<%=FormataPreco(Trim("" & oRsCadastro("ValorPago")))%>" onkeypress="SomentePreco(this);AlterarValor(<%=oRsCadastro("codLancamento")%>,this.value,'valorpago');" onblur="validar_lancamento(<%=oRsCadastro("codLancamento")%>,this.value,'valorpago');">

Função JavaScript

function AlterarValor(Codigo,Valor,Campo,pDtPgto,pDtCompensacao,pValor,pValorPg){
	if((window.event.keyCode == 13) || (window.event.keyCode == 32)){
		var f = document.frmGeneric;

		//Data do Pagamento não pode ser vazio se txtValorPago e txtValor extiverem prrenchidos.
		if(Campo == "pagamento"){
			if(((eval(f.txtValorPago.value) > 0)) && (eval(f.txtValor.value) != 0)) || ((f.txtValorPago.value != null) && (f.txtValor.value != null))){
				if((f.txtdtPgto.value == "") || (f.txtdtPgto.value == null)){
					alert("O campo data do pagamento precisa estar preenchido!");
					return false;
					f.txtdtPgto.focus();
				}
			}
		}

		if(Campo == "compensacao"){
			//Se data de compensação estiver preenchida, os campos txtdtPgto, txtValorPago e txtValor precisam estar preenchidos
			if((f.txtdtCompensacao.value != "") || (f.txtdtCompensacao.value != null)){
				if(f.dtCompensacao.value < f.dtPgto.value){
					alert("A data de compensação não pode ser menor que a data de pagamento!");
					return false;
					f.txtdtCompensacao.focus();
				}

				if((f.txtdtPgto.value == "") || (f.txtdtPgto.value == null)){
					alert("O campo data do pagamento precisa estar preenchido!");
					return false;
					f.txtdtPgto.focus();
				}
				
				if((f.txtValorPago.value == "") || (eval(f.txtValorPago.value) == 0) || (f.txtValorPago.value == null)){
					alert("O campo valor pago precisa estar preenchido!");
					return false;
					f.txtValorPago.focus();
				}
				
				if((f.txtValor.value == "") || (eval(f.txtValor.value) == 0) || (f.txtValor.value == null)){
					alert("O campo valor precisa estar preenchido!"); 
					return false;
					f.txtValor.focus();
				}
			}
		}

		f.txtdtPgto.value = pDtPgto;
		f.txtdtCompensacao.value = pDtCompensacao;
		f.txtValor.value = pValor;
		f.txtValorPago.value = pValorPg;
		f.codigo.value = Codigo;
		f.valor.value = Valor;
		f.campo.value = Campo;
		f.acao.value = "alterar";
		f.action = "operLancamentosPlanilha.asp";		
		f.target = "frameAlterar";	
		f.submit();
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Preencha a propriedade ID dos inputs e no javascript acesse-os da seguinte maneira:

var texto = document.getElementById('elementoID').value;

Utilizar o método getElementById é bem mais recomendado do que acessar os objetos direto pelo nome.

 

Se quiser deixar o código como está você pode tentar só adicionar a propriedade ID e ver se o código funciona como está.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.