Ir para conteúdo

Arquivado

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

Bru_ce

[Resolvido] Não Repetir mesmo número no Input

Recommended Posts

Bom Dia,

Gente, estou com um pequeno problemas.

O Usuário tem que dar prioridades para alguns temas,

por exemplo: Agilidade, Eficiência e assim vai,

Ao total são 8 temas, e preciso validar cada um deles com o seguinte,

As notas não podem ser iguais, e não podem ser menor que 1 e maior que 8.

Eu fiz, funcionou, porém da uns 'bugs'.

Segue me código abaixo:

 

$(document).ready(function(){
$("#formulario").submit(function(){
var p1Etapa3 = $("#p1Etapa3").val();
var p2Etapa3 = $("#p2Etapa3").val();
var p3Etapa3 = $("#p3Etapa3").val();
var p4Etapa3 = $("#p4Etapa3").val();
var p5Etapa3 = $("#p5Etapa3").val();
var p6Etapa3 = $("#p6Etapa3").val();
var p7Etapa3 = $("#p7Etapa3").val();
var p8Etapa3 = $("#p8Etapa3").val();
var valorDuplicado;
var valorMaior;

if(p1Etapa3 != "")
{
	if(p1Etapa3 >=1 && p1Etapa3 <=8)
	{	
		valorMaior = 1;
		if(p1Etapa3 == p2Etapa3 || p1Etapa3 == p3Etapa3 || p1Etapa3 == p4Etapa3 || 
		p1Etapa3 == p5Etapa3 || p1Etapa3 == p6Etapa3 || p1Etapa3 == p7Etapa3 || p1Etapa3 == p8Etapa3)
		{
			$("#aviso1").text('Você duplicou Valores');
	return false;	
		}
		else
		{
			$("#aviso1").text('');

		}
	}
	else
	{
		valorMaior = 0;
	}
}

if(p2Etapa3 != "")
{
	if(p2Etapa3 >=1 && p2Etapa3 <=8)
	{	
		valorMaior = 1;
		if(p2Etapa3 == p1Etapa3 || p2Etapa3 == p3Etapa3 || p2Etapa3 == p4Etapa3 || 
		p2Etapa3 == p5Etapa3 || p2Etapa3 == p6Etapa3 || p2Etapa3 == p7Etapa3 || p2Etapa3 == p8Etapa3)
		{
			$("#aviso1").text('Você duplicou Valores');
	return false;	
		}
		else
		{
			$("#aviso1").text('');

		}
	}
	else
	{
		valorMaior = 0;
	}
}


if(p3Etapa3 != "")
{
	if(p3Etapa3 >=1 && p3Etapa3 <=8)
	{	
		valorMaior = 1;
		if(p3Etapa3 == p1Etapa3 || p3Etapa3 == p3Etapa3 || p3Etapa3 == p4Etapa3 || 
		p3Etapa3 == p5Etapa3 || p3Etapa3 == p6Etapa3 || p3Etapa3 == p7Etapa3 || p3Etapa3 == p8Etapa3)
		{
			$("#aviso1").text('Você duplicou Valores');
	return false;	
		}
		else
		{
			$("#aviso1").text('');

		}
	}
	else
	{
		valorMaior = 0;
	}
}

if(p4Etapa3 != "")
{
	if(p4Etapa3 >=1 && p4Etapa3 <=8)
	{	
		valorMaior = 1;
		if(p4Etapa3 == p1Etapa3 || p4Etapa3 == p2Etapa3 || p4Etapa3 == p3Etapa3 || 
		p4Etapa3 == p5Etapa3 || p4Etapa3 == p6Etapa3 || p4Etapa3 == p7Etapa3 || p4Etapa3 == p8Etapa3)
		{
			$("#aviso1").text('Você duplicou Valores');
	return false;	
		}
		else
		{
			$("#aviso1").text('');

		}
	}
	else
	{
		valorMaior = 0;
	}
}

if(p5Etapa3 != "")
{
	if(p5Etapa3 >=1 && p5Etapa3 <=8)
	{	
		valorMaior = 1;
		if(p5Etapa3 == p1Etapa3 || p5Etapa3 == p2Etapa3 || p5Etapa3 == p3Etapa3 || 
		p5Etapa3 == p4Etapa3 || p5Etapa3 == p6Etapa3 || p5Etapa3 == p7Etapa3 || p5Etapa3 == p8Etapa3)
		{
			$("#aviso1").text('Você duplicou Valores');
	return false;	
		}
		else
		{
			$("#aviso1").text('');

		}
	}
	else
	{
		valorMaior = 0;
	}
}


if(p6Etapa3 != "")
{
	if(p6Etapa3 >=1 && p6Etapa3 <=8)
	{	
		valorMaior = 1;
		if(p6Etapa3 == p1Etapa3 || p6Etapa3 == p2Etapa3 || p6Etapa3 == p3Etapa3 || 
		p6Etapa3 == p4Etapa3 || p6Etapa3 == p5Etapa3 || p6Etapa3 == p7Etapa3 || p6Etapa3 == p8Etapa3)
		{
			$("#aviso1").text('Você duplicou Valores');
	return false;	
		}
		else
		{
			$("#aviso1").text('');

		}
	}
	else
	{
		valorMaior = 0;
	}
}

if(p7Etapa3 != "")
{
	if(p7Etapa3 >=1 && p7Etapa3 <=8)
	{	
		valorMaior = 1;
		if(p7Etapa3 == p1Etapa3 || p7Etapa3 == p2Etapa3 || p7Etapa3 == p3Etapa3 || 
		p7Etapa3 == p4Etapa3 || p7Etapa3 == p5Etapa3 || p7Etapa3 == p6Etapa3 || p7Etapa3 == p8Etapa3)
		{
			$("#aviso1").text('Você duplicou Valores');
	return false;	
		}
		else
		{
			$("#aviso1").text('');

		}
	}
	else
	{
		valorMaior = 0;
	}
}

if(p8Etapa3 != "")
{
	if(p8Etapa3 >=1 && p8Etapa3 <=8)
	{	
		valorMaior = 1;
		if(p8Etapa3 == p1Etapa3 || p8Etapa3 == p2Etapa3 || p8Etapa3 == p3Etapa3 || 
		p8Etapa3 == p4Etapa3 || p8Etapa3 == p5Etapa3 || p8Etapa3 == p6Etapa3 || p8Etapa3 == p7Etapa3)
		{
			$("#aviso1").text('Você duplicou Valores');
	return false;	
		}
		else
		{
			$("#aviso1").text('');

		}
	}
	else
	{
		valorMaior = 0;
	}
}




if(valorDuplicado == 1)
{
	$("#aviso1").text('Você duplicou Valores');
	return false;	
}
else
{
	$("#aviso1").text('');
}

if(valorMaior == 0)
{
	$("#aviso2").text('Ordene os valores de 1 à 8 Apenas');	
	return false
}
else
{
	$("#aviso2").text('');
}

});



});

 

Se alguém souber uma maneira mais fácil, será de grande AJUDA !

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

expressão regular...

http://pt.wikipedia.org/wiki/Express%C3%A3o_regular

http://www.w3schools.com/js/js_obj_regexp.asp

http://www.w3schools.com/jsref/jsref_obj_regexp.asp

 

var pattern = /[1-8]/
var regex = new RegExp(pattern);

alert(regex.test("8"));
alert(regex.test("0"));
alert(regex.test("9"));
alert(regex.test("7"));

 

Mas aí no caso ele vai verificar se tem ocorrôncia de 1 a 8 na string inteira ou seja será necessário a implementação de outras regras para finalizar a validação do campo.

ex.:

- quantidadeMaximaDeCaracteres

- verificarSeENumeroInteiro

- verificarSeValorTemDuplicidade

- verificarSeEObrigatorio

 

Existe também um plugin de validação do jQuery q fica bem mais completo e facil de criar validação de campos:

http://docs.jquery.com/Plugins/Validation

 

Também existe um modulo de dojo para validação de campos.. muito legal - http://livedocs.dojotoolkit.org/dijit/form/ValidationTextBox

 

 

E como já falei antes crie uma função para ler o valor dos inputs automaticamente e verificar se há duplicidade dentro do laço de repetição utilizado nessa mesma função. mais ou menos como exemplifiquei em seu outro tópico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, eu não consegui.

Estou desesperado .. me ajuda !

 

Tentei com Js Puro, e nem assim ..

 

Script

 

function valida(){
if( (document.getElementById('p1').value >=1 && document.getElementById('p1').value <=8) &&
	(document.getElementById('p2').value >=1 && document.getElementById('p2').value <=8) &&
	(document.getElementById('p3').value >=1 && document.getElementById('p3').value <=8) &&
	(document.getElementById('p4').value >=1 && document.getElementById('p4').value <=8) &&
	(document.getElementById('p5').value >=1 && document.getElementById('p5').value <=8) &&
	(document.getElementById('p6').value >=1 && document.getElementById('p6').value <=8) &&
	(document.getElementById('p7').value >=1 && document.getElementById('p7').value <=8) &&
	(document.getElementById('p8').value >=1 && document.getElementById('p8').value <=8))
	{
	duplo();
	}
else
{
document.getElementById('aviso1').innerHTML='Existem erros de validação, volte e corrija.';
return false	
}
}

function duplo(){
	if( (document.getElementById('p1').value == document.getElementById('p2').value){
		alert("erro");
		return false;
		}
}


Compartilhar este post


Link para o post
Compartilhar em outros sites
function validaSeNumeroDeUmAOito(array){
   var pattern = /[1-8]/
   var regex = new RegExp(pattern);
   for(i in array){
      if(regex.test(document.getElementById(array[i]).value)) return false;
   }
   return true;
}

//...
var inputIdent = new Array('p1','p2','p3','p4','p5','p6','p7','p8',);

if(!validaSeNumeroDeUmAOito(inputIdent )) return false;
//...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda nada viu cara, copiei e colei.

 

Coloquei assim no meu formulário

 

<form id="formulario" method="post" action="envia_pesquisa.php" onsubmit="return validaSeNumeroDeUmAOito(array)">

Compartilhar este post


Link para o post
Compartilhar em outros sites

function validaSeNumeroDeUmAOito(array){
       var pattern = /^[1-8]{1}$/
       var regex = new RegExp(pattern);
       for(i in array){
           if(!regex.test(array[i])) return false;
       }
       return true;
   }

//...
function valida(){
   //...
   if(!validaSeNumeroDeUmAOito(arrayInputId)) return false;
   if(temDuplicidadeDeValores()) return false;

   return true;
}

 

é claro q precisa implementar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Meninão, consegui cara.

 

Dê uma olhada por Favor,

Coloquei nos inputs maxlength 1, ou seja o usuário não poderá digitar 10, 11, 99 ..

 

function valida(){
var p1 = $("#p1").val();
var p2 = $("#p2").val();
var p3 = $("#p3").val();
var p4 = $("#p4").val();
var p5 = $("#p5").val();
var p6 = $("#p6").val();
var p7 = $("#p7").val();
var p8 = $("#p8").val();


var pattern = /[1-8]/
   var regex = new RegExp(pattern);
   var vp1 = ((regex.test(p1)));
var vp2 = ((regex.test(p2)));
var vp3 = ((regex.test(p3)));
var vp4 = ((regex.test(p4)));
var vp5 = ((regex.test(p5)));
var vp6 = ((regex.test(p6)));
var vp7 = ((regex.test(p7)));
var vp8 = ((regex.test(p8)));

if((isNaN(p1) || (p2) || (p3) || (p4) || (p5) || (p6) || (p7) || (p8) )){
if(!(vp1 == true && vp2 == true && vp3 == true && vp4 == true && vp5 == true && vp6 == true && vp7 == true && vp8 == true)){
	$("#aviso").text('Digite Apenas de 1 à 8.');
	return false	
}
else{
	if(p1 == p2 || p1 == p3 || p1 == p4 || p1 == p5 || p1 == p6 || p1 == p7 || p1 == p8 ||
	p2 == p3 || p2 == p4 || p2 == p5 || p2 == p6 || p2 == p7 || p2 == p8 ||
	p3 == p4 || p3 == p5 || p3 == p6 || p3 == p7 || p3 == p8 ||
	p4 == p5 || p4 == p6 || p4 == p7 || p4 == p8 || p5 == p6 || p5 == p7 || p5 == p8 ||
	p6 == p7 || p6 == p8 ||	p7 == p8){
		$("#aviso").text('Existe duplicidade de Valores.');
		return false	
		}
	}
}
}



 

Vlw e MUITO obrigado mano.

Me ajudou tanto nisso quanto para concatenar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom já que você conseguiu...

 

eu tinha feito um script pra você q você tinha pedido..

vou por ae pra você analizar e melhorar sua validação

 

utilizei dojo framework

 

 

formulario.php

<?php header("Content-Type: text/html; charset=UTF-8"); ?>
<!--DOCUMENT-->
<html>
<head>
   <link href="/dojo/dijit/themes/claro/claro.css" rel="stylesheet" type="text/css" />
   <script type="text/javascript" src="/dojo/dojoConfig.js"></script>
   <script type="text/javascript"src="/dojo/dojo/dojo.js"></script>
   <script type="text/javascript">
       require([
           "dijit/form/Form",
           "dijit/form/ValidationTextBox",
           "dijit/form/Button",
           "dijit/registry",
           "dojo/_base/xhr",
           "dijit/Dialog"

       ],function(Form,ValidationTextBox, Button, registry, Ajax, Dialog){

           function verificaDuplicidade(formNodeElement){
               var input = formNodeElement.getValues();
               for(i in input) {
                   for(j in input){
                       if((i != j) && (input[i] == input[j])){
                           return true;
                       }
                   }
               }
               return false;
           }
           //setando constantes
           var pattern = "^[1-8]{1}$"
           var missingMessage = 'Campo Obrigatório';
           var invalidMessage = 'O valor inserido não é válido';

           //iniciando inputs
           new ValidationTextBox({
               name: 'p1',
               required: true,
               missingMessage: missingMessage,
               regExp: pattern,
               invalidMessage: invalidMessage,
               placeHolder: 'Questão 1'
           },'p1');
           new ValidationTextBox({
               name: 'p2',
               required: true,
               missingMessage: missingMessage,
               regExp: pattern,
               invalidMessage: invalidMessage,
               placeHolder: 'Questão 2'
           },'p2');
           new ValidationTextBox({
               name: 'p3',
               required: true,
               missingMessage: missingMessage,
               regExp: pattern,
               invalidMessage: invalidMessage,
               placeHolder: 'Questão 3'
           },'p3');
           new ValidationTextBox({
               name: 'p4',
               required: true,
               missingMessage: missingMessage,
               regExp: pattern,
               invalidMessage: invalidMessage,
               placeHolder: 'Questão 4'
           },'p4');
           new ValidationTextBox({
               name: 'p5',
               required: true,
               missingMessage: missingMessage,
               regExp: pattern,
               invalidMessage: invalidMessage,
               placeHolder: 'Questão 5'
           },'p5');
           new ValidationTextBox({
               name: 'p6',
               required: true,
               missingMessage: missingMessage,
               regExp: pattern,
               invalidMessage: invalidMessage,
               placeHolder: 'Questão 6'
           },'p6');
           new ValidationTextBox({
               name: 'p7',
               required: true,
               missingMessage: missingMessage,
               regExp: pattern,
               invalidMessage: invalidMessage,
               placeHolder: 'Questão 7'
           },'p7');
           new ValidationTextBox({
               name: 'p8',
               required: true,
               missingMessage: missingMessage,
               regExp: pattern,
               invalidMessage: invalidMessage,
               placeHolder: 'Questão 8'
           },'p8');

           //botão submit
           new Button({
               label: 'Enviar',
               type: 'submit'
           },'form_pesquisa_submit');

           var form = new Form({
               name: 'form_pesquisa',
               method: 'post',
               onSubmit: function(e){
                   dojo.stopEvent(e);
                   if(!this.validate()) return false;
                   if(verificaDuplicidade(this)) {
                       DialogDuplicidade.show();
                       return false;
                   }

                   Ajax.post({
                       url:"#",
                       form: 'form_pesquisa',
                       load: function(data){
                           alert(data);
                       },
                       error: function(data){

                       }
                   });

                   return true;
               }
           },'form_pesquisa');

           var DialogDuplicidade = new Dialog({
               title: 'Duplicidade de resultado',
               content: 'Existe duplicidade de valores nas respostas da pesquisa'
           });
           DialogDuplicidade.placeAt(document.body);
           DialogDuplicidade.startup();
       });
   </script>
</head>
<body class="claro">
   <form id="form_pesquisa">
       <input id="p1" />
       <br />
       <input id="p2" />
       <br />
       <input id="p3" />
       <br />
       <input id="p4" />
       <br />
       <input id="p5" />
       <br />
       <input id="p6" />
       <br />
       <input id="p7" />
       <br />
       <input id="p8" />
       <br />
       <button id="form_pesquisa_submit" />
   </form>
</body>
</html>

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.