Mini Shell
/* * jQuery validVal debugger * Helps debugging the validation of forms * * Copyright (c) 2013 Fred Heusschen * www.frebsite.nl * * Dual licensed under the MIT and GPL licenses. * http://en.wikipedia.org/wiki/MIT_License * http://en.wikipedia.org/wiki/GNU_General_Public_License */(function( $ ){ if ( !console ) console = {}; if ( !console.log ) console.log = function() {}; if ( !console.info ) console.info = function() {}; if ( !console.warn ) console.warn = function() {}; if ( !console.error ) console.error = function() {}; if ( !console.group ) console.group = function() {}; if ( !console.groupEnd ) console.groupEnd = function() {}; $.fn.validValDebug = function( addBtn ) { // validVal not found, don't proceed if ( !$.fn.validVal || typeof $.fn.validVal.version == 'undefined' ) { console.error( 'validVal-plugin not found or too old!' ); return this; } var version = $.fn.validVal.version; if ( typeof version == 'string' ) { version = version.split( '.' ); } version = parseFloat( version[ 0 ] + '.' + version[ 1 ] ); // Old version of validVal, don't proceed if ( version < 4.4 ) { console.error( 'validValDebug needs at least version 4.4.0 of the validVal-plugin.' ); return this; } // Fired on multiple forms if ( this.length > 1 ) { return this.each( function() { $(this).validValDebug( addBtn ); } ); } var form = this; var api = ( version < 5.0 ) ? 'vv-isValidVal' : 'validVal'; // Form is not validVal, don't proceed if ( !form.data( api ) ) { console.log( nodeStringFromNode( form[ 0 ] ) + ' is not a validVal form.' ); return form; } var opts = form.triggerHandler( 'options.vv' ); // Add the validate button if ( typeof addBtn != 'boolean' ) { addBtn = true; } if ( addBtn ) { var panel = $( '<div />' ) .appendTo( form ) .css({ 'padding': '20px 0' }); $( '<input type="submit" value="Validate" />' ) .appendTo( panel ) .bind( 'click.vv', function( event ) { event.preventDefault(); event.stopPropagation(); form.triggerHandler( 'validate.vv', [ form, false ] ); } ); } // Bind the debugging info to the fields if ( version < 5.0 ) { $('input, select, textarea', form).bind( 'isValid.vv', function( e, valid, callCallback, invalidCheck ) { isValid.call( this, valid, invalidCheck, $(this).data( 'vv-validations' ), opts ); } ); } else { $('input, select, textarea', form).each( function() { var that = this, vf = $(this).data( 'validValField' ); if ( vf ) { var of = vf.isValid; vf.isValid = function( valid, callCallback, invalidCheck ) { of.apply( vf, arguments ); isValid.call( that, valid, invalidCheck, vf.validations, opts ); }; } } ); } return form; } function isValid( valid, invalidCheck, validations, opts ) { if ( valid ) { console.group( 'Valid:\n', this ); console.log( 'Validation(s) that passed: "' + validations.join( '", "' ) + '".' ); } else { console.group( 'NOT VALID!\n', this ); var msg = 'Validation "' + invalidCheck + '" failed for the value "' + $(this).val() + '"'; if ( opts.validations[ invalidCheck ] ) { msg += ':\n'; msg += ( '\t' + opts.validations[ invalidCheck ] ) .split( '\r\n' ).join( '\r' ) .split( '\n\r' ).join( '\r' ) .split( '\r\r' ).join( '\r' ) .split( '\r' ).join( '\n' ) .split( '\t' ).join( ' ' ); } else { msg += '.'; } console.warn( msg + '\n\n' ); } console.groupEnd(); } function nodeStringFromNode( node ) { var str = node.nodeName.toLowerCase(); if ( node.id ) { str += '#' + node.id; } else if ( node.name ) { str += '[name="' + node.name + '"]'; } return str; }})( jQuery );
Zerion Mini Shell 1.0