git-svn-id: https://192.168.0.254/svn/Proyectos.FundacionLQDVI_WebCongresos/trunk@2 94ccb1af-fd9d-d947-8d90-7f70ea60afc8
166 lines
4.1 KiB
JavaScript
166 lines
4.1 KiB
JavaScript
/**
|
|
* @version $Id: validate.js 7401 2007-05-14 04:12:55Z eddieajau $
|
|
* @package Joomla
|
|
* @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
|
|
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL, see LICENSE.php
|
|
* Joomla! is free software. This version may have been modified pursuant
|
|
* to the GNU General Public License, and as distributed it includes or
|
|
* is derivative of works licensed under the GNU General Public License or
|
|
* other free or open source software licenses.
|
|
* See COPYRIGHT.php for copyright notices and details.
|
|
*/
|
|
|
|
/**
|
|
* Unobtrusive Form Validation library
|
|
*
|
|
* Inspired by: Chris Campbell <www.particletree.com>
|
|
*
|
|
* @package Joomla.Framework
|
|
* @subpackage Forms
|
|
* @since 1.5
|
|
*/
|
|
var JFormValidator = new Class({
|
|
initialize: function()
|
|
{
|
|
// Initialize variables
|
|
this.handlers = Object();
|
|
this.custom = Object();
|
|
|
|
// Default handlers
|
|
this.setHandler('username',
|
|
function (value) {
|
|
regex = new RegExp("[\<|\>|\"|\'|\%|\;|\(|\)|\&]", "i");
|
|
return !regex.test(value);
|
|
}
|
|
);
|
|
|
|
this.setHandler('password',
|
|
function (value) {
|
|
regex=/^\S[\S ]{2,98}\S$/;
|
|
return regex.test(value);
|
|
}
|
|
);
|
|
|
|
this.setHandler('numeric',
|
|
function (value) {
|
|
regex=/^(\d|-)?(\d|,)*\.?\d*$/;
|
|
return regex.test(value);
|
|
}
|
|
);
|
|
|
|
this.setHandler('email',
|
|
function (value) {
|
|
regex=/^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
|
|
return regex.test(value);
|
|
}
|
|
);
|
|
|
|
// Attach to forms with class 'form-validate'
|
|
var forms = $$('form.form-validate');
|
|
forms.each(function(form){ this.attachToForm(form); }, this);
|
|
},
|
|
|
|
setHandler: function(name, fn, en)
|
|
{
|
|
en = (en == '') ? true : en;
|
|
this.handlers[name] = { enabled: en, exec: fn };
|
|
},
|
|
|
|
attachToForm: function(form)
|
|
{
|
|
// Iterate through the form object and attach the validate method to all input fields.
|
|
$A(form.elements).each(function(el){
|
|
el = $(el);
|
|
if ((el.getTag() == 'input' || el.getTag() == 'button') && el.getProperty('type') == 'submit') {
|
|
if (el.hasClass('validate')) {
|
|
el.onclick = function(){return document.formvalidator.isValid(this.form);};
|
|
}
|
|
} else {
|
|
el.addEvent('blur', function(){return document.formvalidator.validate(this);});
|
|
}
|
|
});
|
|
},
|
|
|
|
validate: function(el)
|
|
{
|
|
// If the field is required make sure it has a value
|
|
if ($(el).hasClass('required')) {
|
|
if (!($(el).getValue())) {
|
|
this.handleResponse(false, el);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Only validate the field if the validate class is set
|
|
var handler = (el.className && el.className.search(/validate-([a-zA-Z0-9\_\-]+)/) != -1) ? el.className.match(/validate-([a-zA-Z0-9\_\-]+)/)[1] : "";
|
|
if (handler == '') {
|
|
this.handleResponse(true, el);
|
|
return true;
|
|
}
|
|
|
|
// Check the additional validation types
|
|
if ((handler) && (handler != 'none') && (this.handlers[handler]) && $(el).getValue()) {
|
|
// Execute the validation handler and return result
|
|
if (this.handlers[handler].exec($(el).getValue()) != true) {
|
|
this.handleResponse(false, el);
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Return validation state
|
|
this.handleResponse(true, el);
|
|
return true;
|
|
},
|
|
|
|
isValid: function(form)
|
|
{
|
|
var valid = true;
|
|
|
|
// Validate form fields
|
|
for (var i=0;i < form.elements.length; i++) {
|
|
if (this.validate(form.elements[i]) == false) {
|
|
valid = false;
|
|
}
|
|
}
|
|
|
|
// Run custom form validators if present
|
|
$A(this.custom).each(function(validator){
|
|
if (validator.exec() != true) {
|
|
valid = false;
|
|
}
|
|
});
|
|
|
|
return valid;
|
|
},
|
|
|
|
handleResponse: function(state, el)
|
|
{
|
|
// Find the label object for the given field if it exists
|
|
if (!(el.labelref)) {
|
|
var labels = $$('label');
|
|
labels.each(function(label){
|
|
if (label.getProperty('for') == el.getProperty('id')) {
|
|
el.labelref = label;
|
|
}
|
|
});
|
|
}
|
|
|
|
// Set the element and its label (if exists) invalid state
|
|
if (state == false) {
|
|
el.addClass('invalid');
|
|
if (el.labelref) {
|
|
$(el.labelref).addClass('invalid');
|
|
}
|
|
} else {
|
|
el.removeClass('invalid');
|
|
if (el.labelref) {
|
|
$(el.labelref).removeClass('invalid');
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
document.formvalidator = null;
|
|
Window.onDomReady(function(){
|
|
document.formvalidator = new JFormValidator();
|
|
}); |