PHP Classes

File: validate.js

Recommend this page to a friend!
  Classes of Herman Veluwenkamp   HV WDDX Metadata   validate.js   Download  
File: validate.js
Role: Auxiliary data
Content type: text/plain
Description: Client-side javascript validation
Class: HV WDDX Metadata
Generates XUL and HTML forms based on XML config.
Author: By
Last change: Fixed typo.
Date: 19 years ago
Size: 4,230 bytes
 

Contents

Class file image Download
/** * vaidate - Javascript Client-Side Validation * @version 1.0alpha * * Copyright (C) 2003 Herman Veluwenkamp <hveluwenkamp@myrealbox.com> * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 24 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ function validate(action) { var error_message = 'This form has the following validation errors.\n\n'; var validation_error = false; var errorRow = null; var error_message_field = null; var encoded_request = '?_action=submit'; var encoded_value = ''; var name = null; var type = null; var description = null; var validate = null; var expected = null; var numOptions = null; var value = null; for (var name in field) { //name = i; type = field[name].type; description = field[name].description; validate = field[name].validate; expected = field[name].expected; numOptions = field[name].numOptions; value = 0; // skip over missing fields if (!document.getElementById(name) & !document.getElementById(name+'[1]')) continue; switch (type) { case 'popup' : element = document.getElementById(name); if (element.selectedIndex == -1) { if (element.value!='') { encodedValue = escape(element.value); encoded_request += "&" + name + "=" + encodedValue; value = 1; } } else { encodedValue = escape(element.selectedItem.value) encoded_request += "&" + name + "=" + encodedValue; value=1; } break; case 'listbox' : for (i = 0; i < numOptions; i++) { element = document.getElementById(name+'['+(i+1)+']'); if (element.selected) { encodedValue = escape(element.value) encoded_request += "&" + name + "%5B%5D=" + encodedValue; value++; } } break; case 'checklist' : case 'checkbox' : for (i = 0; i < numOptions; i++) { element = document.getElementById(name+'['+(i+1)+']'); if (element.checked) { encodedValue = escape(element.getAttribute('value')); encoded_request += "&" + name + "[]=" + encodedValue; value++; } } break; case 'radio' : element = document.getElementById(name); if (element.selectedItem) { encodedValue = escape(element.selectedItem.value) encoded_request += "&" + name + "=" + encodedValue; value=1; } break; case 'password': element = document.getElementById(name+'[1]') value = element.value; encoded_value = hex_md5(escape(value)); encoded_request += "&" + name + "[]=" + encoded_value; break; case 'date': case 'time': case 'text': case 'textbox': element = document.getElementById(name+'[1]') value = element.value; encoded_value = escape(value); encoded_request += "&" + name + "=" + encoded_value; break; default: alert('unknown field: ' + name + ' - ' + type); return false; break; } if (validate && !validate.test(value)) { validation_error = true; error_message += '"' + description + '"\n' + expected + '\n\n' } } if (validation_error) { alert(error_message); return false; } else { document.location = action + encoded_request; } }