Unobtrusive jQuery Validation com forms dinâmicos

03/05/2013 21:53:00 By Felipe Pessoto

Recentemente tive um problema ao usar um form dinâmico no ASP.NET MVC. A validação não "intrusiva" é processada assim que a página termina de carregar, e a partir daquele momento não é mais alterada. Porém eu tinha uma página que carregava todo o conteúdo do form via Ajax, e neste caso é ainda pior do que carregar um novo form, pois se o form já existia ele é marcado para não ser processado novamente, então preciso primeiro desmarca-lo e depois ativar a validação novamente. O código é simples, só não é algo suportado ou documentado, e depende de detalhes da implementação atual:

var form = $('#form-adiciona-entrega');

form.removeData('validator').removeData('unobtrusiveValidation');//Este passo só é necessário se o form já existia. Se o form em si é gerado dinamicamente, não precisa desse "reset"

$.validator.unobtrusive.parse(form);

 

Encontrei também este código, que diz fazer isso automaticamente a cada chamada ajax, mas que depende também de detalhes do ASP.NET MVC:

$(document).ajaxSuccess(function (event, xhr, settings) {
   if (settings.mvcTargetElement) {
       $(settings.mvcTargetElement.getAttribute("data-ajax-update")).each(function () {
          $.validator.unobtrusive.parse(this);
     });
  }
});

 

Fontes:

http://btburnett.com/2011/01/mvc-3-unobtrusive-ajax-improvements.html

http://stackoverflow.com/questions/11045256/jquery-client-side-validate-not-working

jQuery 1.9 RC1 and Migrate RC1

01/09/2013 21:03:36 By Felipe Pessoto

Menos de um mês após o Beta 1 saiu a versão Release Candidate 1. A nova versão 1.9 é um marco na história do jQuery, a intenção é remover o "lixo" acumulado pra manter a compatibilidade com versões antigas, assim muitas partes que estavam obsoletas foram removidas do código.

Para manter funcionando a base de código atual eles disponibilizaram um plug-in chamado jquery-migrate que permite restaurar as funcionalidades obsoletas, emitindo um alerta no console de desenvolvimento, assim você pode ajustar os códigos conforme for possível.

Na versão seguinte, 2.0, será abandonado o suporte aos Internet Explorer´s 6, 7 e 8 que hoje são um problema, obrigando o time do jQuery a inserir diversos hacks pra funcionar como deveria. Assim a versão 2.0 será menor, mais rapida e com menos problemas causados por esses hacks.

Para fazer a migração é só substituir o seu script jQuery por estes:

<script src="http://code.jquery.com/jquery-1.9.0rc1.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.0.0rc1.js"></script>

Se você usa o jQuery 1.6.4 ou superior também pode incluir apenas o jquery-migrate para ver quais avisos aparecem.

Ao achar algum bug, você deve reportar no site http://bugs.jquery.com

jQuery 1.4

01/19/2010 09:54:00 By Felipe Pessoto

Foi lançada a versão 1.4 do jQuery e para divulgar o lançamento foi publicado o site jQuery14.com. O site será atualizado diariamente durante 14 dias, com vídeos e artigos sobre as novas funcionalidades. Parece que a nova nersão está bem mais rápida. Para fazer o download, acesse o site oficial jQuery