Ir para o conteúdo

Attributesintaxe Para Jquery Validate E Jquery Masked Input


Criado por Édipo Costa Rebouças, Fev 05 2011 12:33

Não há respostas para este tópico
  • Por favor, faça o login para responder

#1 Édipo Costa Rebouças

Édipo Costa Rebouças
  • Édipo Costa Rebouças
  • Colaborador
  • 4 Revisões

Revisou 05 fevereiro 2011 - 12:33

attributeSintaxe

Dependências

http://jquery.com/
http://bassistance.d...gin-validation/
http://digitalbush.c...d-input-plugin/

/*
 *  @name attributeSintaxe for jQuery Validate and jQuery Masked Input
* @author Édipo Costa Rebouças
 *
 **/
(function( $ ){
	//firebug aux
	if(typeof(console) == 'undefined') window.console = {log : function(){}, error: function(){}, info: function(){}};

	var settings = {
    	'validate': {}
	};

	var methods = {
    	init: function(options){
        	return this.each(
            	function(){
                	console.info('[attributeSintaxe] init start:'+new Date());
                	if ( options ) {
                    	$.extend( settings, options );
                	}
                	if($.fn.validate && $.fn.mask){
                    	console.info('[attributeSintaxe] jQuery Validate found');
                    	$(this).validate(settings.validate);
                    	$(this).find(':input').each(
                        	function(){
                            	var $this = $(this);
                            	var rules = $this.attr('data-rules');
                            	var mask = $this.attr('data-mask');
                            	try{
                                	if(typeof(rules)!='undefined'){
                                    	eval("$this.rules('add',"+rules+")");
                                    	console.info('[attributeSintaxe] success with rules:'+this.tagName+'[name='+this.name+']'+rules);
                                	}
                            	}
                            	catch(e){
                                	console.error('[attributeSintaxe] error with rules:'+this.tagName+'[name='+this.name+']'+rules);
                            	}
                            	try{
                                	if(typeof(mask)!='undefined'){
                                    	eval("$this.mask("+mask+")");
                                    	console.info('[attributeSintaxe] success with mask:'+this.tagName+'[name='+this.name+']'+mask);
                                	}
                            	}
                            	catch(e){
                                	console.error('[attributeSintaxe] error with mask:'+this.tagName+'[name='+this.name+']'+mask);
                            	}
                        	}
                    	);
                	}
                	else{
                    	console.error('[attributeSintaxe] error jQuery Validate//Masked Input not found');
                	}
                	console.info('[attributeSintaxe] init end:'+new Date());
            	}
        	);
    	},
    	update: function(){
        	return this.each(function(){
            	console.info('update start:'+new Date());
            	$(this).attributeSintaxe('destroy');
            	$(this).attributeSintaxe('init');
            	console.info('update end:'+new Date());
        	});
    	},
    	destroy: function(){
        	return this.each(function(){
                	console.info('destroy start:'+new Date());
                	if($.fn.validate && $.fn.mask){
                    	console.info('[attributeSintaxe] jQuery Validate found');
                    	$(this).find(':input').each(
                        	function(){

                            	var rules = $(this).attr('data-rules');
                            	var mask = $(this).attr('data-mask');
                            	var sMethods = '';
                            	eval('rules = '+rules);
                            	for(method in rules){
                                	sMethods += method + ' ';
                            	}
                            	try{
                                	if(typeof(rules)!='undefined'){
                                    	$(this).rules('remove',sMethods);
                                    	console.info('[attributeSintaxe] success with remove rules:'+this.tagName+'[name='+this.name+']'+rules);
                                	}
                            	}
                            	catch(e){
                                	console.error('[attributeSintaxe] error with remove rules:'+this.tagName+'[name='+this.name+']'+rules);
                            	}
                            	try{
                                	if(typeof(mask)!='undefined'){
                                    	$(this).unmask();
                                    	console.info('[attributeSintaxe] success with unmask:'+this.tagName+'[name='+this.name+']'+mask);
                                	}
                            	}
                            	catch(e){
                                	console.error('[attributeSintaxe] error with unmask:'+this.tagName+'[name='+this.name+']'+mask);
                            	}
                        	}
                    	);
                	}
                	else{
                    	console.error('[attributeSintaxe] error jQuery Validate//Masked Input not found');
                	}
                	console.info('[attributeSintaxe] destroy end:'+new Date());
        	});
    	}
	};
	$.fn.attributeSintaxe = function( method ) {
    	if ( methods[method] ) {
        	return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
    	} else if ( typeof method === 'object' || ! method ) {
        	return methods.init.apply( this, arguments );
    	} else {
        	$.error( 'Method ' +  method + ' does not exist on jQuery.attributeSintaxe' );
    	}
	};
})(jQuery);


Como Usar:
$(document).ready(function(){
	$('form').attributeSintaxe({
        		'validate': {
            		focusCleanup: false,
            		focusInvalid: false,
            		onclick: false,
            		onkeyup: false,
            		onfocusout: false,
            		onsubmit: true
        		}
    	});
});

No HTML, fazer da Seguinte forma

	<input type="text" name="telefone"  data-rules="{ required: true }" data-mask="'(99)9999-9999'" />

A única opção do plugin é o objeto validate, que sera passado ao jQuery Validation.

Esta revisão foi editado por Édipo Costa Rebouças: 23 fevereiro 2011 - 10:24





1 usuário(s) está(ão) lendo este código

1 membro(s), 0 visitante(s) e 0 membros anônimo(s)