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 Rodrigo5468
      Boa tarde a todos.
       
      Estou desenvolvendo um sistema de registro para fins de estudos, mas tenho algumas dúvidas e dificuldades até. Estou usando "programação orientada a objetos", e quero validar alguns campos do meu registro, se puderem me auxiliar, será de grande ajuda.
       
      Meu Diretório:
      Projeto1/ ├── backend/ │ ├── classes/ │ │ ├── Register.php ├── index.php Em Register.php tenho o seguinte código para fazer a validação, mas acredito que estou fazendo algo de errado.
      public function setUsername($username) { $sql = "SELECT * FROM $this->table WHERE username = :username"; $stmt = Database::prepare($sql); $stmt->execute(array('username' => $_POST["username"])); if(empty($_POST["username"])) { return "O campo usuário não pode ser vázio."; }elseif(ctype_space($_POST["username"])) { return "Não pode usar apenas espaços no campo de usuário."; }elseif(strlen($_POST["username"] < 3)) { return "É necessário no mínimo 3 (três) caracteres no usuário."; }elseif(strlen($_POST["username"] > 15)) { return "O máximo é de 15 (quinze) caracteres no usuário."; }elseif(preg_match("/^[a-zA-Z0-9]*$/", $_POST["username"] == 0)) { return "O nome de usuário só pode conter letras e números. (sem espaços e sem caracteres epeciais)"; }elseif($stmt->num_rows !== 0) { return "O nome de usuário já está cadastrado em nossos bancos de dados."; }else { $this->username = $username; } } E no index.php tenho o seguinte código, acredito que está certo, mas eu gostaria de mostrar as mensagens de erros que estão no Register.php, como que posso fazer isso?
      $register = new Registers(); if(isset($_POST["cadastrar"])) { $username = $_POST["username"]; $email = $_POST["email"]; $password = $_POST["password"]; $register->setUsername($username); $register->setEmail($email); $register->setPassword($password); if($register->insert()) { return "Usuário cadastrado com sucesso."; } }  
       
      Obrigado pela atenção!
    • By unnie
      Se alguém estiver lendo, olá! Estou tentando fazer um CRUD e na parte de validação do e-mail, eu recebo um email tudo certinho, entretanto não estou conseguindo fazer o update de um campo do BD que corresponde ao id que informa se o e-mail está verificado ou não ...
       
      O código de verificação de e-mail está abaixo:
      <?php include "dbh.inc.php"; $token = $_GET['token']; $email = $_GET['email']; $idEmail = 1; $sql = "SELECT * FROM users WHERE emailUsers=? AND token=?"; $stmt = mysqli_stmt_init($conn); if(!mysqli_stmt_prepare($stmt, $sql)){ echo"".$email; header("Location: ../header.php?error=sqlerror"); exit(); } else{ mysqli_stmt_bind_param($stmt, "ss", $email, $token); mysqli_stmt_execute($stmt); $result = mysqli_stmt_get_result($stmt); if($row = mysqli_fetch_assoc($result)){ ############################################################################################## $sql = "UPDATE users SET emailConfirm='$idEmail' WHERE emailUsers='$email' AND token='$token'"; $stmt = mysqli_stmt_init($conn); mysqli_stmt_execute($stmt); echo "".$row['emailConfirm'].$row['emailUsers'].$row['token'].$row['']; ############################################################################################## } if(!mysqli_stmt_affected_rows()>0){ echo"Afetou Linhas"; } else{ echo"Nenhuma Linha Afetada"; } } no e-mail contém um link estilo:
       
      site.com/arquivo.php?email=$email&token=$token
      site.com/arquivo.php?email=oemaildousuario&token=tokendousuario
       
      quando peço que faça o 'echo' do token e e-mail, é imprimido na tela o email e token que estão no link corretamente como eu quero e quando peço 'echo' de outra informação do usuário que contem as informações equivalentes ao do token e email do link as informações são mostradas corretamente também, mas no momento que peço pelo UPDATE nada acontece no BD, o id de validação (emailConfirm) de e-mail continua em '0'  e não faz o update para 1...
       
      alguém pode me ajudar???  Obrigada !
    • By vonder
      Preciso de validar os campos do "CRIAR LOGIN";
      Armazenar informações em alguma variável ao clicar no botão CADASTRAR; (não pode usar banco de dados)
      validar campos do "LOGIN";
      permitir acesso ao LOGIN se as informações forem iguais as inseridas no CRIAR LOGIN;
       
      Se conseguirem armazenar os cadastros em algum vetor ajudaria dms!

    • By marcelobbt
      Eu estou montando um form para editar alguns dados, então uso o PHP/Codeigniter para montar a página com as informações. Acontece que existem umas caixas de escolha que possuem um código em AngularJS para executar uma fórmula e quando coloco o "ng-model", simplesmente some o item que deveria estar marcado.
       
      Segue parte do form abaixo:
      <div class="form-group"> <label>Trajetória:</label> <?php echo form_input(array('type'=>"text", 'class'=>"form-control", 'name'=>'trajetoriaform','id'=>'trajetoriaform'),$riscoBD->__get('trajetoria')); ?> </div> <div class="form-group"> <label>Frequência:</label> <?php echo form_dropdown(array('class'=>"form-control", "ng-model"=>"frequencia", "ng-change"=>"calcRisco()", 'name'=>'frequenciaform','id'=>'frequenciaform'), $frequencia, $riscoBD->__get('frequencia')); ?> </div> <div class="form-group"> <label>Probabilidade:</label> <?php echo form_dropdown(array('class'=>"form-control", "ng-model"=>"probabilidade", "ng-change"=>"calcRisco()", 'name'=>'probabilidadeform','id'=>'probabilidadeform'), $probabilidade, set_value('probabilidadeform')); ?> </div> <div class="form-group"> <label>Severidade:</label> <?php echo form_dropdown(array('class'=>"form-control", "ng-model"=>"severidade", "ng-change"=>"calcRisco()", 'name'=>'severidadeform','id'=>'severidadeform'), $severidade, set_value('severidadeform')); ?> </div> <div class="form-group"> <label>Risco:</label> <?php echo form_input(array('type'=>"text", "ng-value"=>"resultadorisco", 'class'=>"form-control", 'name'=>'riscoform','id'=>'riscoform', "ng-model"=>"risco"),set_value('riscoform')); ?> </div>  
      Quando gera o html, ao colocar para inspecionar o código de uma das caixas o código fica assim:
      <div class="form-group"> <label>Frequência:</label> <select class="form-control" ng-model="frequencia" ng-change="calcRisco()" name="frequenciaform" id="frequenciaform"> <option value="? undefined:undefined ?"></option> <option value="1" selected="selected">Rara</option> <option value="2">Eventual</option> <option value="3">Habitual</option> <option value="4">Permanente</option> </select> </div> Essa linha "4" aparece do angularJS e é o que impede que apareça o valor selected.
       
      Queria saber se tem algum geito de fazer o javascript mostrar o valor que vem do PHP.
       
      Abaixo o script:
      var app = angular.module('risco', []); app.controller('CalculaRisco', function($scope) { $scope.frequencia; $scope.probabilidade; $scope.severidade; $scope.calcRisco = function () { var freq = parseInt ($scope.frequencia); var prob = parseInt ($scope.probabilidade); var sev = parseInt ($scope.severidade); //console.log(sev+' '+prob+' '+freq); risco = freq + prob + sev; if (risco <= 4) { $scope.risco = 'Baixo'; } else if (risco <= 7) { $scope.risco = 'M\u00e9dio'; } else if (risco <= 10) { $scope.risco = 'Alto'; } else { $scope.risco = 'Muito Alto'; } //console.log(risco+$scope.severidade); }; });  
    • By Alex Gustavo Canalli de So
      Boa noite pessoal.

      Estou desenvolvendo uma aplicação de controle de finanças com receitas, despesas, transferências entre contas, relatórios e gráficos em angularjs + webapi + ddd + automapper + injeção de dependencias para estudo de novas tecnologias, pois trabalho atualmente com WebForms.

      Criei todas as (Domais, Applications, Services, Repository, etc).

      A minha grande dúvida é a seguinte:
      Nas telas de cadastro eu basicamente retorno o objeto inteiro no controller de cada entidade (domain), Mas na tela de gráfico por tipo de despesa por exemplo, não consigo fazer dessa forma, pois preciso retornar o valor total de despesas cadastradas para cada tipo em determinado período.
      No WebForms eu criaria uma classe personalizada com os campos necessários e faria um select new { } direto no link setando o valor de cada campo, porém, no ddd me vejo obrigado a instanciar os campos fixos do domain.
      Existe alguma forma de criar uma view personalizada para o retorno de uma consulta?
×

Important Information

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