X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fp5-CGI-Ex;a=blobdiff_plain;f=lib%2FCGI%2FEx%2Fvalidate.js;h=a5014afef5d789226419a9055965a986d62f71ab;hp=8d4c296aee4d37ab42bc9221799dd53121164813;hb=4eee158dce82376f2f37de29d91c53f60a24aebe;hpb=85070b46d0a93ddbeef07341421adb8389a55418 diff --git a/lib/CGI/Ex/validate.js b/lib/CGI/Ex/validate.js index 8d4c296..a5014af 100644 --- a/lib/CGI/Ex/validate.js +++ b/lib/CGI/Ex/validate.js @@ -1,10 +1,10 @@ /**----------------------------------------------------------------*** -* Copyright 2004 - Paul Seamons * +* Copyright 2006 - Paul Seamons * * Distributed under the Perl Artistic License without warranty * * Based upon CGI/Ex/Validate.pm v1.14 from Perl * * For instructions on usage, see perldoc of CGI::Ex::Validate * ***----------------------------------------------------------------**/ -// $Revision: 1.31 $ +// $Revision: 1.34 $ function Validate () { this.error = vob_error; @@ -60,7 +60,10 @@ function vob_validate (form, val_hash) { /// look for a group order and then fail back to the keys of the group var fields = group_val['group fields']; var order = new Array(); - for (var key in group_val) order[order.length] = key; + for (var key in group_val) { + if (key == 'extend') continue; // Protoype Array() fix + order[order.length] = key; + } order = order.sort(); if (fields) { if (typeof(fields) != 'object' || ! fields.length) @@ -151,6 +154,7 @@ function vob_validate (form, val_hash) { /// store any extra items from self for (var key in this) { + if (key == 'extend') continue; // Protoype Array() fix if (! key.match('_error$') && ! key.match('^(raise_error|as_hash_\\w+|as_array_\\w+|as_string_\\w+)$')) continue; EXTRA[key] = this[key]; @@ -241,7 +245,10 @@ function vob_validate_buddy (form, field, field_val, N_level, ifs_match) { var errors = new Array(); var types = new Array(); - for (var key in field_val) types[types.length] = key; + for (var key in field_val) { + if (key == 'extend') continue; // Protoype Array() fix + types[types.length] = key; + } types = types.sort(); /// allow for not running some tests in the cgi @@ -570,9 +577,9 @@ function vob_check_type (value, type, field, form) { /// the "username" portion of an email address } else if (type == 'LOCAL_PART') { if (typeof(value) == 'undefined' || ! value.length) return 0; - if (! value.match('[^a-z0-9.\\-!&]')) return 0; - if (! value.match('^[.\\-]')) return 0; - if (! value.match('[.\\-&]$')) return 0; + if (! value.match('[^a-z0-9.\\-!&+]')) return 0; + if (! value.match('^[.\\-]')) return 0; + if (! value.match('[.\\-&]$')) return 0; if (! value.match('(\\.-|-\\.|\\.\\.)')) return 0; /// standard IP address @@ -771,7 +778,10 @@ function eob_as_hash (extra2) { if (joiner) { var header = eob_get_val('as_hash_header', extra2, extra1, ''); var footer = eob_get_val('as_hash_footer', extra2, extra1, ''); - for (var key in ret) ret[key] = header + ret[key].join(joiner) + footer; + for (var key in ret) { + if (key == 'extend') continue; // Protoype Array() fix + ret[key] = header + ret[key].join(joiner) + footer; + } } return ret; @@ -913,6 +923,7 @@ document.validate = function (form, val_hash) { // undo previous inline if (document.did_inline) { for (var key in document.did_inline) { + if (key == 'extend') continue; // Protoype Array() fix var el = document.getElementById(key); if (el) el.innerHTML = ''; } @@ -937,6 +948,7 @@ document.validate = function (form, val_hash) { var d = document.did_inline = new Array(); var hash = err_obj.as_hash(); for (var key in hash) { + if (key == 'extend') continue; // Protoype Array() fix var el = document.getElementById(key); if (el) el.innerHTML = hash[key]; d[key] = 1;