Ir para conteúdo

POWERED BY:

Arquivado

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

sergionpinheiro

Validação de campo dinâmico

Recommended Posts

Boa tarde galera, estou tentando fazer a validação de um campo dinâmico, mas estou tendo problemas. Ele funciona assim, tenho um campo chamado data e outro chamado código. Quando digito um código ele vai lá no banco e confere se o código digitado corresponde aquela data que eu validei, caso contrário, dá um erro. O problema é que o nome do input é codigo[], ou seja, ele trás um array. O problema está aí, segue o que já foi feito:

<script type="text/javascript">
	$(function(){
		$("input[name='codigo[]']").blur(function(){

			var codigo = $("input[name='codigo[]']").val();

			$.post('check_dates',{codigo: codigo},function(data){
				$('#resultado').html(data);
				if(data != 'Disponível') {
					$("input[name='codigo']").val('').focus();
				}
			});
		});
	});
</script>

Esse é o que valida o campo em tempo real, sem precisar dar refresh na página.

 

<script type="text/javascript">
  $(function() {
    $("#add_input").click(function() {
      	var input = '<div class="control-group number"><br>';
      	input += ' <label class="col-sm-2 control-label">Código:</label>';
      	input += ' <div class="col-sm-6">';
      	input += ' <input name="codigo[]" type="text" class="form-control" placeholder="Código de barras" data-placement="top" onfocus required></div>';
      	input += ' <a href="#new_input" class="btn btn-danger del_row"><i class="fa fa-remove"></i></a></div>';

      $("#codigos").append(input);
      return false;
    });

    $('.del_row').live('click', function() {
      $(this).parent().remove();
    });

  });

</script>

Esse é o que insere os campos dinâmicos.

 

$sql_date = "SELECT * FROM tb_estoque_users WHERE EST_CODIGO = '".$_POST['codigo']."' AND DATE(EST_CADASTRO) != '".$_SESSION['date']."'";

    $date = mysqli_query($link, $sql_date) or die(mysqli_error($link));

    if(mysqli_num_rows($date) > 0 ) {
    	echo "<script language:'javascript'>window.alert('Pacote inserido de outro dia!')</script>";
    }else{
    	echo "Disponível";
    }

 

Essa é a consulta.

 

Ele até chega a validar no primeiro campo, mas nos outros não. Não sei onde está erro, agradeço a ajuda de vocês.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara,

 

Existem diversas coisas que você precisa fazer:

1º - Muda a sua logica para acertar esse nome, não colocar { } [ ] ( ) ou qualquer outro carácter especial no nome;

2º - Tirando o caso de radio, não deixa repetir no nome dos inputs;

3º - Coloca IDs único nos inputs, que não sejam repetidos em hipótese alguma; 

4º - No javascript, validar os inputs buscando pelo ID e não pelo nome

 

Acredito que após fazer essas alterações o sistema ficará dentro do padrão e será mais fácil de fazer as coisas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Blz amigo,

 

Mas, você teria como dar um exemplo, pois preciso desse [ ] para fazer inserções no banco. Tipo, acrescento umas 10 linhas dinamicamente e, cada linha, virá com um codigo[ ] diferente, se eu retirar [ ], não vai dar problema na hora de salvar no banco?

 

Outra coisa, se eu colocar pelo ID, na hora de validar sem refresh, como ele vai saber pra qual campo ele irá voltar, caso dê erro na verificação?

 

Veja abaixo:

 

if(data != 'Disponível') {
	$("input[name='codigo[xxxxxxxxxx]']").val('').focus();
}else{
	$("input[name='codigo[xxxxxxxxxx]']").focus();
}

Como inseri os campos dinamicamente, cada um terá um ID, ou seja, depois de eu ter inserido 8 campos e, no nono der um erro, ele precisa voltar para o 9, e não para o primeiro. Como farei isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Então, os dados NUNCA devem ser enviados para o banco de dados sem qualquer tipo de tratamento do lado do servidor, isso é uma falha de segurança ABSURDA, muda isso agora.

 

Você vai acessar pelo ID do objeto

if(data != 'Disponível') {
	$("#xxxxxxxxxx").val('').focus();
}else{
	$("#xxxxxxxxxx").focus();
}

E vai precisar tratar do lado do servidor para montar o comando de inclusão no banco, não vai pegar diretamente o que vem da página

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Estou com uma dúvida, referente cálculo de valores em tempo real.

      Tenho uma rotina, que faz o cálculo, o problema é mostrar o resultado.

      Quero mostrar o RESULTADO assim: 0,00  ou  0.00

      Abaixo posto o código.
      jQuery('input').on('keyup',function(){ //Remover ponto e trocar a virgula por ponto var m = document.getElementById("pgRest").value; while (m.indexOf(".") >= 0) { m = m.replace(".", ""); } m = m.replace(",","."); //Remover ponto e trocar a virgula por ponto var j = document.getElementById("pgDsct").value; while (j.indexOf(".") >= 0) { j = j.replace(".", ""); } j = j.replace(",","."); m = parseFloat(jQuery('#pgRest').val() != '' ? jQuery('#pgRest').val() : 0); j = parseFloat(jQuery('#pgDsct').val() != '' ? jQuery('#pgDsct').val() : 0); //Mostra o Resultado em Tempo Real jQuery('#pgTroco').val(m - j); <<=== aqui estou errando })  
       
      Grato,
       
      Cesar
       
       
    • Por violin101
      Caro amigos, saudações.

      Tenho uma tabela escrita em JS que funciona corretamente.
       
      Minha dúvida:
      - como devo fazer para quando a Tabela HTML estiver vazia, exibir o LOGO da Empresa ?

      Abaixo posto o script:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'i' ) return;// Não é Ctrl+A, portanto interrompemos o script evt.preventDefault(); //Chama a Função Calcular Qtde X Valor Venda calcvda(); var idProdutos = document.getElementById("idProdutos").value; var descricao = document.getElementById("descricao").value; var prd_unid = document.getElementById("prd_unid").value; var estoque_atual = document.getElementById("estoque_atual").value; var qtde = document.getElementById("qtde").value; var vlrunit = document.getElementById("vlrunit").value; var vlrtotals = document.getElementById("vlrtotal").value; var vlrtotal = vlrtotals.toLocaleString('pt-br', {minimumFractionDigits: 2}); if(validarConsumo(estoque_atual)){ //Chama a Modal com Alerta. $("#modal_qtdemaior").modal(); } else { if(qtde == "" || vlrunit == "" || vlrtotal == ""){ //Chama a Modal com Alerta. $("#modal_quantidade").modal(); } else { //Monta a Tabela com os Itens html = "<tr style='font-size:13px;'>"; html += "<td width='10%' height='10' style='text-align:center;'>"+ "<input type='hidden' name='id_prds[]' value='"+idProdutos+"'>"+idProdutos+"</td>"; html += "<td width='47%' height='10'>"+ "<input type='hidden' name='descricao[]' value='"+descricao+"'>"+descricao+ "<input type='hidden' name='esp[]' value='"+prd_unid+"'> - ESP:"+prd_unid+ "<input type='hidden' name='estoq[]' value='"+estoque_atual+"'></td>"; html += "<td width='10%' height='10' style='text-align:center;'>"+ "<input type='hidden' name='qtde[]' value='"+qtde+"'>"+qtde+"</td>"; html += "<td width='12%' height='10' style='text-align:right;'>"+ "<input type='hidden' name='vlrunit[]' value='"+vlrunit+"'>"+vlrunit+"</td>"; html += "<td width='14%' height='10' style='text-align:right;'>"+ "<input type='hidden' name='vlrtotal[]' value='"+vlrtotal+"'>"+vlrtotal+"</td>"; html += "<td width='12%' height='10' style='text-align:center;'>"+ "<button type='button' class='btn btn-uvas btn-remove-produto' style='margin-right:1%; padding:1px 3px; font-size:12px;' title='Remover Item da Lista'>"+ "<span class='fa fa-minus' style='font-size:12px;'></span></button></td>"; html += "</tr>"; $("#tbventas tbody").append(html); //Função para Somar os Itens do Lançamento somar(); $("#idProdutos").val(null); $("#descricao").val(null); $("#prd_unid").val(null); $("#qtde").val(null); $("#vlrunit").val(null); $("#vlrtotal").val(null); $("#idProdutos").focus(); //Se INCLUIR NOVO produto - Limpa a Forma de Pagamento $("#pgSoma").val(null); $("#pgRest").val(null); $("#pgDsct").val(null); $("#pgTroco").val(null); $("#tbpagar tbody").empty(); }//Fim do IF-qtde }//Fim do Validar Consumo });//Fim da Função btn-agregar  
      Grato,

      Cesar
       
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
×

Informação importante

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