Validar input array

725 views
Skip to first unread message

Calafrio...

unread,
Feb 18, 2010, 3:00:12 PM2/18/10
to jQuery (Brasil)
Boa tarde,

Alguém já teve esta necessidade antes?

Preciso validar um input com o nome serial[].

Ocorre que tem duas validações.

01 validar se o campo está vazio.
02 validar se o campo está repetindo

Enquanto o usuario digita no input o javascritp/jquery valida para
evitar que o user digite valor repetido.

Formulario
<form>
<input type="text" name="serial[]">
<input type="submit" value="Continuar">
</form>

Att Gilberto

Jaydson Gomes

unread,
Feb 18, 2010, 6:08:49 PM2/18/10
to jque...@googlegroups.com
Cara, não entendi qual a dificuldade nessa validação.
Mandando o input com colchetes tu vai receber um array no server, mas para o javascript nesse teu caso não existe nenhum desafio.
Com o jQuery, tu pode setar uma classe para todos os inputs, e fazer sua regra de validação baseando-se nessa classe.


2010/2/18 Calafrio... <gil...@gmail.com>

--
Você está recebendo esta mensagem porque se inscreveu no grupo "jQuery (Brasil)" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para jque...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para jquery-br+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/jquery-br?hl=pt-BR.




--
Jaydson Gomes
Analista/Desenvolvedor Web
http://jaydson.org
http://meadiciona.com/jaydson
Sent from Porto Alegre, Rio Grande do Sul, Brasil

Ruan Carlos

unread,
Feb 19, 2010, 5:35:55 AM2/19/10
to jque...@googlegroups.com
Calafrio, verificar se ele está repedido com o que?


if($("#algo").html() === $("#outroalgo").html()) {
repetido
}


Em 18/02/10, Jaydson Gomes<jaya...@gmail.com> escreveu:

>> jquery-br+...@googlegroups.com<jquery-br%2Bunsu...@googlegroups.com>


>> .
>> Para obter mais opções, visite esse grupo em
>> http://groups.google.com/group/jquery-br?hl=pt-BR.
>>
>>
>
>
> --
> Jaydson Gomes
> Analista/Desenvolvedor Web
> http://jaydson.org
> http://meadiciona.com/jaydson
> Sent from Porto Alegre, Rio Grande do Sul, Brasil
>
> --
> Você está recebendo esta mensagem porque se inscreveu no grupo "jQuery
> (Brasil)" dos Grupos do Google.
> Para postar neste grupo, envie um e-mail para jque...@googlegroups.com.
> Para cancelar a inscrição nesse grupo, envie um e-mail para
> jquery-br+...@googlegroups.com.
> Para obter mais opções, visite esse grupo em
> http://groups.google.com/group/jquery-br?hl=pt-BR.
>
>


--
-----------------------------------------------------------------
Ruan Carlos
@ruanltbg
www.ruancarlos.com.br
Desenvolvedor web

Calafrio...

unread,
Feb 18, 2010, 7:50:12 PM2/18/10
to jQuery (Brasil)
Desculpe a ignorancia mas de todas as maneiras que tentei não obtive
êxito, você teria uma exemplo para estas validações ou link referencia
ai?

Tenho jquery aqui...

Agradeço desde já.

> > jquery-br+...@googlegroups.com<jquery-br%2Bunsubscribe@googlegroups .com>


> > .
> > Para obter mais opções, visite esse grupo em
> >http://groups.google.com/group/jquery-br?hl=pt-BR.
>
> --
> Jaydson Gomes

> Analista/Desenvolvedor Webhttp://jaydson.orghttp://meadiciona.com/jaydson

Calafrio...

unread,
Feb 19, 2010, 6:43:56 AM2/19/10
to jQuery (Brasil)
Então...

Tenho um formulário que é gerado por um for(){}

Ele gera os input com nome serial[] dinamicamente e o usuario digita
os seriais.

Exemplo de um resultado esperado

A medida que o usuário vai digitanto não é validação Server Side e sim
Cliente Side
Serial: 0133554 (OK) em verde
Serial: 0133555 (OK) em verde
Serial: 0133556 (OK) em verde
Serial: 0133556 ( X ) em vermelho. (repetiu com o de cima)

Para o campo vazio a validação é através de uma alert("Nenhum campo
pode ficar vazio!");


Att Gilberto


On 19 fev, 07:35, Ruan Carlos <ruanl...@gmail.com> wrote:
> Calafrio, verificar se ele está repedido com o que?
>
> if($("#algo").html() === $("#outroalgo").html()) {
> repetido
>
> }
>

> Em 18/02/10, Jaydson Gomes<jayale...@gmail.com> escreveu:

> >> jquery-br+...@googlegroups.com<jquery-br%2Bunsubscribe@googlegroups .com>

José Henrique

unread,
Feb 19, 2010, 7:18:14 AM2/19/10
to jque...@googlegroups.com
Você poderia usar um objeto para controlar as repetições, tipo:

var valores_digitados = [];
$("input[name='serial[]']").onblur( function (e) {
if ($.inArray($.trim(e.target.value), valores_digitados)) {
// valor é duplicado. Faça seu tratamento de erro aqui.
}
else {
valores_digitados.push($.trim(e.target.value));
}
});

Zénrique.

José Henrique

unread,
Feb 19, 2010, 7:18:43 AM2/19/10
to jque...@googlegroups.com
Ops. Array, não objeto.

Calafrio...

unread,
Feb 19, 2010, 7:44:59 AM2/19/10
to jQuery (Brasil)
Assim?

(function($){

var valores_digitados = [];
$("input[name='serial[]']").onblur( function (e) {
if ($.inArray($.trim(e.target.value), valores_digitados)) {
// valor é duplicado. Faça seu tratamento de erro aqui.
}
else {
valores_digitados.push($.trim(e.target.value));
}
});

})(jQuery);


José Henrique

unread,
Feb 19, 2010, 7:52:13 AM2/19/10
to jque...@googlegroups.com
Não. Assim:

$("document").ready( function () {


var valores_digitados = [];
$("input[name='serial[]']").onblur( function (e) {
   if ($.inArray($.trim(e.target.value), valores_digitados)) {
       // valor é duplicado.  Faça seu tratamento de erro aqui.
   }
   else {
       valores_digitados.push($.trim(e.target.value));
   }
});

});

Calafrio...

unread,
Feb 19, 2010, 9:17:33 AM2/19/10
to jQuery (Brasil)
Acho que estou comendo bola...

<script language="JavaScript">


$("document").ready( function () {
var valores_digitados = [];
$("input[name='serial[]']").onblur( function (e) {
if ($.inArray($.trim(e.target.value), valores_digitados)) {
// valor é duplicado. Faça seu tratamento de erro aqui.

alert ("Repetido");
}
else {
valores_digitados.push($.trim(e.target.value));
}
});
});

</script>

Não faz nada e quando substituo o onblur por blur ele da alert mesmo
quando os campos são diferentes...

Att Gilberto

José Henrique

unread,
Feb 19, 2010, 2:12:58 PM2/19/10
to jque...@googlegroups.com
Essa mania de escrever código e não testar. inArray retorna -1 se o
elemento não estiver no array ou 0...n, indicando a posição ocupada.

Dessa forma, a comparação deve ser: $.inArray($.trim(e.target.value),
valores_digitados) >= 0

E o evento JQuery é blur mesmo (e não onblur, como eu havia escrito).

Zénrique.

Calafrio...

unread,
Feb 19, 2010, 2:48:28 PM2/19/10
to jQuery (Brasil)
Em relação ao testes que você realizou funcionou?

José Henrique

unread,
Feb 19, 2010, 3:17:12 PM2/19/10
to jque...@googlegroups.com
Sim.

Calafrio...

unread,
Feb 19, 2010, 3:21:43 PM2/19/10
to jQuery (Brasil)
Então eu vou por o meu santo de cabeça para baixo...

Tentei com o jquery 1.3 até 1.4.1 e nada...

Com os testes que faço aqui...ele retorna no else.


Me diz uma coisa...como faço para imprimir o valor que está
retornando?

Att Gilberto

José Henrique

unread,
Feb 19, 2010, 3:26:48 PM2/19/10
to jque...@googlegroups.com
Rapaz, funciona. Dá uma olhada em http://jsfiddle.net/skP5W/

Calafrio...

unread,
Feb 20, 2010, 12:08:38 PM2/20/10
to jQuery (Brasil)
Opa!

Agora foi....

Só que quando o user clica em um campo anterior...parece impressão
minha mas ele se perde e deixa tudo em vermelho...

Vou ver se consigo fazer algum alteração que se ajuste

Att Gilberto

On 19 fev, 17:26, José Henrique <jhr...@gmail.com> wrote:
> Rapaz, funciona.  Dá uma olhada emhttp://jsfiddle.net/skP5W/

Reply all
Reply to author
Forward
0 new messages