Jump to content
marcelobbt

Validação em campos adicionados

Recommended Posts

Estou montando um form que acrescenta alguns campos mais esses campos que são acrescentados não consigo fazer funcionar a validação.

 

Obs: Se eu colocar o campo no html as regras de validação funcionam, mas se eu acrescento via botão ele não funciona.

 

html:

<div class="row"  ng-app="acidente">
	<div class="col-sm-12">
		<h2>Cadastrar Acidente</h2>
		<p>Empresa: <?php echo '<strong>'.$mensal->__get('empresa').'</strong>&nbsp;&nbsp;-&nbsp;&nbsp;Período:'.$mensal->__get('mes').'/'.$mensal->__get('ano'); ?></p>
		<form class="form-horizontal" name="acidenteForm" novalidate action="http://www.google.com">
			<div class="form-group">
				<label class="col-sm-2 control-label">Dia do Acidente<span class="vermelho">*</span>:</label>
				<div class="col-sm-10">
					<input type="number" name="diaform" class="form-control" ng-model="diaform" required dia-Acidente>
					&nbsp;&nbsp;<span class="vermelho" ng-show="acidenteForm.diaform.$invalid && acidenteForm.diaform.$dirty">O dia do acidente deve ser um número válido.</span>
				</div>
			</div>
			<div class="form-group">
				<label class="col-sm-2 control-label">Descrição do Acidente<span class="vermelho">*</span>:</label>
				<div class="col-sm-10">
					<textarea name="descricaoform" class="form-control" required ng-model="descricaoform" rows="5"></textarea>
					<p class="vermelho" ng-show="acidenteForm.descricaoform.$invalid && acidenteForm.descricaoform.$dirty">Favor preencher a descrição do acidente.</p>
				</div>
			</div>
			<div class="form-group">
				<label class="col-sm-2 control-label">Recomendações do Acidente:</label>
				<div class="col-sm-10">
					<textarea name="recomendacaoform" class="form-control" rows="5"></textarea>
				</div>
			</div>
			<span ng-controller="AdicionarController">
				<div class="form-group">
					<label class="col-sm-2 control-label">Adicionar acidentado:</label>
					<div class="col-sm-10">
						<input type="button" class="btn btn-success" ng-click="AdicionarCampos()" name="adicionarAcidentado" value="+">
					</div>
				</div>
				<div id="maisCampos">
					
				</div>
			</span>
			

			<p><span class="vermelho">*</span> campos de preenchimento obrigatório</p>
			<div class="form-group">
				<label class="col-sm-2 control-label">&nbsp;</label>
				<div class="col-sm-10">
					<input type="submit" class="btn btn-success" name="cadastrar" ng-disabled="acidenteForm.$invalid" value="Enviar">
				</div>
			</div>
		</form>
	</div>
	<script src="<?php echo base_url(); ?>js/angular.min.js"></script>
	<script src="<?php echo base_url(); ?>js/acidente.js"></script>
</div>

 

acidente.js

var app = angular.module('acidente', []);
app.directive('diaAcidente', function() {
    return { 
        require: 'ngModel',
        link: function(scope, element, attr, mCtrl) {
            function myValidation(value) {
                if (value > 0 && value < 32) {
                    mCtrl.$setValidity('charE', true);
                } else {
                    mCtrl.$setValidity('charE', false);
                }
                return value;
            }
            mCtrl.$parsers.push(myValidation);
        }
    };
});
 var adicionar = []; 
 var i = 0;
app.controller('AdicionarController', function($scope) {
	$scope.AdicionarCampos = function () {
        ordinal = i+1;
        adicionar.push('<p><strong>'+ordinal+'º acidentado</strong></p>');
        adicionar.push('<div class="form-group"><label class="col-sm-2 control-label">Matrícula:</label><div class="col-sm-10"><input type="number" name="matriculaform'+i+'" class="form-control"></div></div>');
        adicionar.push('<div class="form-group"><label class="col-sm-2 control-label">Previsão de Alta<span class="vermelho">*</span>:</label><div class="col-sm-10"><input type="date" name="previsaoform'+i+'" id="previsaoform'+i+'" class="form-control" required ng-model="previsaoform'+i+'">&nbsp;&nbsp;<span class="vermelho" ng-show="acidenteForm.previsaoform'+i+'.$invalid && acidenteForm.previsaoform'+i+'.$dirty">Favor informar a previsao da alta.</span></div></div>');
        document.getElementById("maisCampos").innerHTML = adicionar;
        i = i + 1;
    };
});

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Air-Gear
      Olá, na parte de enviar eu conseguir, mas manter até terminar o cadastro eu não conseguir. Eu vou contar toda a história para ficar mais claro possível.
       
      Eu precisei implementar um Upload de qualquer imagem ou PDF na página de solicitar compras. O site utiliza AngularJS, a primeira versão do Angular. Eu tentei fazer sem depender de PHP, mas na internet achava só a parte de Front-End e ninguém sabia fazer no Back-End. Então eu resolvi fazer com PHP mesmo.
       
      Nó código PHP, ele aceita todos as extensões de imagens mais o PDF e é possível envia-los todos de uma vez na quantidade que quiser. Todos os arquivos serão renomeados, contendo no nome o ID do usuário logado pego pela função javascript, o dia do mês, o mês, o ano, o dia da semana, a hora, o minuto, o segundo, se é AM ou PM e uma numeração aleatório. O arquivo PDF vai continuar sendo PDF e todas as imagens serão JPG. No final, todos serão enviados para uma pasta chamada upload.
       
      Só que agora eu preciso jogar de volta para página para salvar os novos nomes dos arquivos para continuar o cadastro da solicitação de compras. Como AngularJS utiliza Javascript, eu tentei usa-lo dentro do PHP utilizando EOF, mas não tive resultado. Eu só consigo com HTML com as diretivas do AngularJS. Na parte do API, nos atributos, eu declarei "nomeArquivo: []," , para salvar os nomes dos arquivos.
       
      Seguem o código.
      <div class="row"> <div class="col-sm-12 col-md-6 "> <div class="upload_form_cont"> <form id="upload_form" enctype="multipart/form-data" method="post" action="/profile-upload"> <div> <div><label for="image_file">Selecione o arquivo de imagem</label></div> <div><input type="file" name="image_file" id="image_file" accept="image/*" onchange="fileSelected();" /></div> </div> <div> <input type="button" value="Upload" onclick="startUploading()" /> </div> <div id="fileinfo"> <div id="filename"></div> <div id="filesize"></div> <div id="filetype"></div> <div id="filedim"></div> </div> <div id="error">Você deve selecionar apenas arquivos de imagem válidos!</div> <div id="error2">Ocorreu um erro ao enviar o arquivo</div> <div id="abort">O upload foi cancelado pelo usuário ou o navegador interrompeu a conexão</div> <div id="warnsize">Seu arquivo é muito grande. Não podemos aceitar isso. Selecione arquivos pequenos</div> <div id="progress_info"> <div id="progress"></div> <div id="progress_percent">&nbsp;</div> <div class="clear_both"></div> <div> <div id="speed">&nbsp;</div> <div id="remaining">&nbsp;</div> <div id="b_transfered">&nbsp;</div> <div class="clear_both"></div> </div> <div id="upload_response"></div> </div> </form> </div> </div> </div> upload.php
      <?php function bytesToSize1024($bytes, $precision = 2) { $unit = array('B','KB','MB'); return @round($bytes / pow(1024, ($i = floor(log($bytes, 1024)))), $precision).' '.$unit[$i]; } //Pega o id do usuário logado $id_url = $_GET['id']; // Numero de campos de upload $numeroCampos = count($_FILES['image_file']['name']); // Tamanho máximo do arquivo (em bytes) $tamanhoMaximo = 1024*1024*2; // Extensões aceitas $extensoes = array(".jpg", "jpeg", ".gif", ".png", ".pdf", ".bmp", ".pdf", ".tiff"); //Local da pasta $_UP['pasta'] = '../upload/'; $substituir = false; for ($i = 0; $i < $numeroCampos; $i++) { // Informações do arquivo enviado $sFileName = $_FILES['image_file']['name'][$i]; $sSize = $_FILES['image_file']['size'][$i]; $sFileSize = bytesToSize1024($sSize, 1); $nomeTemporario = $_FILES['image_file']['tmp_name'][$i]; // Verifica se o arquivo foi colocado no campo if (!empty($sFileName)) { $erro = false; // Verifica se o tamanho do arquivo é maior que o permitido if ($sSize > $tamanhoMaximo) { $erro = "O arquivo " . $sFileName . " não deve ultrapassar " . $tamanhoMaximo. " bytes"; } // Verifica se a extensão está entre as aceitas elseif (!in_array(strrchr($sFileName, "."), $extensoes)) { $erro = "A extensão do arquivo <b>" . $sFileName . "</b> não é válida"; } // Verifica se o arquivo existe e se é para substituir elseif (file_exists($_UP['pasta'] . $sFileName) and !$substituir) { $erro = "O arquivo <b>" . $sFileName . "</b> já existe"; } else{ //Pega a extensão do arquivo $TipoExtensao = pathinfo($sFileName, PATHINFO_EXTENSION); // O arquivo passou em todas as verificações, hora de tentar movê-lo para a pasta // Primeiro verifica se deve trocar o nome do arquivo $unixTime = time(); $timeZone = new \DateTimeZone('America/Sao_Paulo'); $time = new \DateTime(); $time->setTimestamp($unixTime)->setTimezone($timeZone); $formattedTime = $time->format('d-m-Y_l_h-i-s-a'); $aleatorio = rand(); if($TipoExtensao == 'pdf'){ $nome_final = $id_url .'_'. $formattedTime .'_'. $aleatorio .'.pdf'; }else{ $nome_final = $id_url .'_'. $formattedTime .'_'. $aleatorio .'.jpg'; } // Depois verifica se é possível mover o arquivo para a pasta escolhida if (move_uploaded_file($nomeTemporario, $_UP['pasta'] . $nome_final)) { // Upload efetuado com sucesso, exibe uma mensagem e um link para o arquivo echo "Upload do arquivo ".$sFileName." foi efetuado com sucesso!"; echo "</br>"; echo<<<EOF <p>Eu tentei implementar o retorno da página aqui!</p> <p></br></p> <p></br></p> EOF; } else { // Não foi possível fazer o upload, provavelmente a pasta está incorreta echo "Não foi possível enviar o arquivo, tente novamente"; echo "</br>"; } } } else { echo "Selecione algum arquivo de imagem ou PDF para fazero upload."; } } ?>  
    • By fideles
      Fala pessoal, tudo na paz? Como anda a quarentena ? Todos se cuidando....
       
      Seguinte, uma dúvida ou navalhada minha,
       
      Tenho um form simples, básico mesmo onde trampo, só para fazermos levantamento quando alguém chega.
       
      Nome da pessoa
      Um regime de contratação (CLT ou PJ) (input do tipo radio) (Nos value dos input radio tem CLT e PJ)
      Nome da empresa (campo oculto) (aqui funciona na boa)
       
      Preciso fazer com que se a pessoa clicar em PJ fazer ela preencher obrigatoriamente o campo "Nome da empresa" se ela for CLT não faz nada.
       
      Já tentei da seguinte forma e não da certo, talvez esteja errando por bobeira.
       
      if(empty($tipo_contratacao == "PJ")) { echo "<meta http-equiv='refresh' content='0; pesquisa_retorno_2.php'><script>alert('O campo nome da empresa não foi preenchido')</script>" ; return false; }  
      Alguém tem uma luz ?
       
      Obrigado.
    • By szLeonardo
      Olá a todos,
      Estou com um problema no meu cadastro de usuário.
      A parte de cadastrar está sendo realizada corretamente e meu login também, o meu problema está é que tenho que cadastrar em uma tela, depois entrar em outra para validar e acessar.
      Gostaria que quando eu realizasse o cadastro já valida-se e entrasse direto, sem precisar ter que entrar na outra pagina e rodar o login.
       
      Segue meu cadastro que está funcionando:  
      //--Insere Registro   if(isset($_POST['cadastrar'])){     @$usuario      = trim(strip_tags($_POST['usuario']));     @$senha        = trim(strip_tags($_POST['senha']));     @$nivel_acesso = trim(strip_tags($_POST['nivel_acesso']));     $insert = "INSERT INTO cad_usuario (usuario, senha, nivel_acesso)                 VALUES (:usuario, :senha, :nivel_acesso)";   try{     $result = $conexao->prepare($insert);     $result->bindParam(':usuario',      $usuario, PDO::PARAM_STR);     $result->bindParam(':senha',        $senha, PDO::PARAM_STR);     $result->bindParam(':nivel_acesso', $nivel_acesso, PDO::PARAM_STR);     $result->execute();     $contar = $result->rowCount();   if($contar>0){     echo '<div class="alert alert-success">           <button type="button" class="close" data-dismiss="alert">×</button>           <strong>Sucesso!</strong> O Usuario foi Cadastrado!</div>';          $_SESSION['autenticado'] = true;   }else{     echo '<div class="alert alert-danger">           <button type="button" class="close" data-dismiss="alert">×</button>           <strong>Erro ao cadastrar!</strong> Não foi possível cadastrar o Usuario.</div>';   }}catch(PDOException $e){     echo $e;   }}   } }  
      Segue meu validador do usuário cadastrado que está funcionando: 
      <?php session_start(); include_once "connection/conecta.php"; $usuario = new Usuario(); try {   if($usuario->confere($_POST['usuario'],$_POST['senha'])) {     $_SESSION['autenticado'] = true;     $_SESSION['usuario'] = $_POST['usuario'];     header('location: principal.php');   } else {     $_SESSION['autenticado'] = false;     include_once "index.php";     exit("<div class='alert alert-danger col-sm-12'>Usuário ou senha incorretos. Verifique</div>");   } } catch(PDOException $p){   echo "Ocorreu um erro inesperado: ". $p->getMessage(); } ?>  
      Segue minha pagina principal aonde valida a $_SESSION['autenticado'] = false; 
      Mas só valida se passar na pagina index e passar pela validação a cima.
       <?php require_once("connection/conecta.php"); ob_start(); session_start();  if (@!$_SESSION['autenticado']){    include_once "index.php";    exit("<div class='alert alert-danger col-sm-12'>Para acessar o sistema você deve efetuar login</div>");  }     $logado = $_SESSION['usuario'];     $sql = "SELECT * from cad_usuario WHERE usuario = '$logado' and situacao = 'A'";     try{       $result = $conexao->prepare($sql);         $result->execute();       $contar = $result->rowCount();                if($contar =1){         $loop = $result->fetchAll();         foreach ($loop as $show){           $userLogado  = $show['usuario'];           $senhaLogado = $show['senha'];           $nivelLogado = $show['nivel_acesso'];         }       }       }catch (PDOWException $erro){ echo $erro;} ?>  
    • By Rogerio Pancini
      Bom dia pessoal.
       
      Fui ajustando um script para enviar e-mails com Ajax e Php.
      Está funcionando muito bem o envio e uma coleta de informações que faço após o envio.
      Para ficar 99% certo, falta um detalhe no Validate, que uso no formulário de contato.
       
      Parece que ele funciona em conjunto com o script de envio e não após fazer a validação.
       
      Se eu usar " submitHandler " (como no exemplo da documentação)
      $("#myform").validate({ submitHandler: function(form) { // some other code // maybe disabling submit button // then: $(form).submit(); } }); Parece que o formulário dá problema no focus, para de clicar, sei lá.
       
      Vou colocar o que fiz aqui.
      Se alguém tiver alguma sugestão desse detalhe, eu agradeço.
       
      <!-- Formulário de contato --> <form name="form_contato" id="form_contato" method="post" action=""> <div class="row"> <div class="col-md-12"> <div class="form-field"> <input type="text" placeholder="Nome" id="nome" name="nome"> </div> </div> <div class="col-md-12"> <div class="form-field"> <input type="tel" placeholder="Telefone" id="telefone" name="telefone"> </div> </div> <div class="col-md-12"> <div class="form-field"> <input type="email" placeholder="E-mail" id="email" name="email"> </div> </div> <div class="col-md-12"> <div class="form-field"> <input type="text" placeholder="Assunto" id="assunto" name="assunto"> </div> </div> </div> <div class="form-field"> <textarea placeholder="Mensagem" rows="4" id="mensagem" name="mensagem"></textarea> </div> <div class="row"> <div class="col-md-6"> <div class="form-button text-left"> <div class="form-tip"> <div class="g-recaptcha" data-sitekey="<?php echo $chave_de_site_sel; ?>"></div> </div> </div> </div> <div class="col-md-6"> <div class="form-button text-right text-center-mobile"> <button type="submit" class="readon">Enviar</button> <input type="hidden" name="enviar" value="ok" /> </div> </div> </div> <div class="text-center" id="post_email" style="display: none; "> <div class="alert alert-warning mt-30" role='alert'>Aguarde, enviando o e-mail...</div> </div> </form> /****** Validate ******/ $().ready(function() { $("#form_contato").validate({ rules: { nome: "required", email: {required: true, email: true}, telefone: "required", assunto: "required", mensagem: "required", }, messages: { nome: "Informe seu nome", email: {required: "Informe o e-mail", email: "Informe um e-mail válido"}, telefone: "Informe o telefone", assunto: "Informe o assunto", mensagem: "Envie uma mensagem" } }); }); /****** Validate ******/ /****** Ajax ******/ $('#form_contato').on('submit', function (e) { e.preventDefault(); const nome = $('input[name="nome"]').val(); const telefone = $('input[name="telefone"]').val(); const email = $('input[name="email"]').val(); const assunto = $('input[name="assunto"]').val(); const mensagem = $('textarea[name="mensagem"]').val(); const g_recaptcha_response = $('#g-recaptcha-response').val(); $('#post_email').css({ 'display': "block" } ); $.ajax({ type: 'post', url: '<?php echo $dir_base; ?>php/post/contato.php', data: {nome: nome, telefone: telefone, email: email, assunto: assunto, mensagem: mensagem, g_recaptcha_response: g_recaptcha_response}, success: function(response) { var data = $.parseJSON(response); if (data.status == 10) { swal({ title: "Enviado", text: "Agradecemos seu contato!", confirmButtonColor: "#007ca8", type: "success" }); $("#form_contato")[0].reset(); grecaptcha.reset(); $('#post_email').css({ 'display': "none" } ); }else if (data.status == 20) { swal({ title: "Oopss...", text: "Ocorreu um problema ao concluir o envio do e-mail", confirmButtonColor: "#e74c3c", type: "error" }); grecaptcha.reset(); $('#post_email').css({ 'display': "none" } ); }else if (data.status == 30) { swal({ title: "Oopss...", text: "O reCAPTCHA não foi habilitado", confirmButtonColor: "#e74c3c", type: "error" }); grecaptcha.reset(); $('#post_email').css({ 'display': "none" } ); }else if (data.status == 40) { swal({ title: "Oopss...", text: "Ocorreu um problema ao acessar o banco de dados", confirmButtonColor: "#e74c3c", type: "error" }); grecaptcha.reset(); $('#post_email').css({ 'display': "none" } ); }else { swal({ title: "Oopss...", text: "Ocorreu um erro ao enviar a mensagem", confirmButtonColor: "#e74c3c", type: "error" }); grecaptcha.reset(); $('#post_email').css({ 'display': "none" } ); } } }); }); /****** Ajax ******/ O post do PHP é meio grande, se for necessário eu coloco ele também.
       
      Muito obrigado
    • By juniormatrix
      Bom dia!
       
      Tenho este código:
       
      $("#formulario").validate({ ignore: [], rules: { nome:{required: true}, contato:{required: true}, telefone:{required: true}, cidade:{required: true}, email:{required: true, email: true}, mensagem:{required: true}, }, });  
      Funciona perfeitamente.
       
      Mas pretendo adicionar um campo oculto no meu formulário nomeado "url" e preciso que o código acima faça a seguinte lógica:
       
      Se o campo "url" estiver preenchido, não faz nada, ou seja, não envia a mensagem; Se estiver vazio, executa o script e envia a mensagem.
       
      Minha intenção é evitar o envio de Spam. Se alguém pude me ajudar, fico grato. E se eu estiver fazendo da forma errada, por favor me avisem.
       
      PS.: vou ser sincero, gostaria do código pronto. Sei que tem bastante conteúdo na internet, mas não tenho interesse em aprender a fazer, pois meu trabalho principal é mais na parte de design. Estou tendo que fazer o serviço de outra pessoa.
       
      Agradeço desde já!
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.