1、使用jsvalidation没效果,点击表单提交没验证直接到了下一页,按F12显示
HTTP404: 找不到 - 服务器尚未找到与请求的 URI (统一资源标识符)匹配的任何内容。
GET - http://localhost:8081/js/validation-framework.js 不知道啥原因,jsvalidation的三个dtd xml 和js代码是老师给的,说是要写一个什么正则表达式,不会改
求解答
2
查过资料 web。xml中没有设置那个什么过滤那个
3下面是framework。js的代码,看不懂
``/*
- JavaScript Validation Framework *
- Author: Michael Chen(mechiland) on 2004/03
- This software is on the http://www.cosoft.org.cn/projects/jsvalidation
- for update, bugfix, etc, you can goto the homepage and submit your request
- and question.
- Apache License 2.0
- You should use this software under the terms. *
- Please, please keep above words. At least ,please make a note that such as
- "This software developed by Michael Chen(http://www.jzchen.net)" .
- $Id: validation-framework.js,v 1.7 2004/04/30 05:33:29 jzchen Exp $ */
/** Config Section, Config these fields to make this framework work. **/
// If there is only one config file in your system, use this property. otherwise, use
// ValidationFramework.init("configfile")
// instead.
var ValidationRoot = "/LoginServletProjectFour/js/";
// the field style when validation fails. it aim to provide more beautiful UI and more good
// experience to the end-user.
// NOTE: this will be buggy. Please report the error to me.
var ValidationFailCssStyle = "border:2px solid #FFCC88;";
//Validation function. The entry point of the framework.
function doValidate(formRef) {
try {
var formId = formRef;
if (typeof (formRef) == "string") {
formId = formRef;
} else if (typeof (formRef) == "object") {
formId = formRef.getAttribute("id");
}
var form = FormFactory.getFormFromId(formId);
if (form != null) {
return ValidationFramework.validateForm(form);
} else {
return false;
}
} catch (e) {
ValidationFramework.exception(e.name+":" +e.description);
return false;
}
}
/**===================================================================**/
/*
- JSValidation Framework Code Started
- Please do not modify the code unless you are very familiar with JavaScript.
- The best way to solve problem is report the problem to our project page.
- url: http://cosoft.org.cn/projects/jsvalidation */ // The Xml document. To process cross-browser. Thanks Eric. function XmlDocument() {} XmlDocument.create = function () { if (document.implementation && document.implementation.createDocument) { return document.implementation.createDocument("", "", null); } else if (window.ActiveXObject) { try { var prefix = ["MSXML2", "MSXML", "Microsoft", "MSXML3"]; for (var i = 0; i < prefix.length; i++) { //return new ActiveXObject(prefix[i] + ".DomDocument"); var obj = new ActiveXObject(prefix[i] + ".DomDocument"); if (obj == null || typeof(obj) == 'undefined') { continue; } else { return obj; } } } catch (e) { //^_^ throw new Error("My God, What version of IE are you using? IE5&+ is requiered."); } } else throw new Error("Cannot create DOM Document!"); }
function ValidationFramework() {}
ValidationFramework._validationCache = null;
ValidationFramework._currentForm = null;
ValidationFramework._userLanguage="auto";
/**
- Validate a form.
- NOTE: the form is Framework virture form, not the HTML Form.
- Html Form can be transform to Virture form by
- FormFactory.getFormFromId(htmlFormId);
- See the doc for more information.
-
@param form the virtual form.
*/
ValidationFramework.validateForm = function(fform) {
ValidationFramework._currentForm = fform;
var failFields = [];
var id = fform.getId();
var showError = fform.getShowError();
var showType = fform.getShowType();var br = null;
if (showError != "alert") {
br = "
";
} else {
br = "\n";
}
var errorStrArray = [];
var ret = false;
var formObj = document.getElementById(id);
var fields = fform.getFields();
var rightnum = 0;
for (var i = 0; i < fields.length; i++) {
var retVal = ValidationFramework.validateField(fields[i]);
var fo=formObj[fields[i].getName()];if (typeof (fo) !='undefined' && fo != null && typeof(fo.type) != "undefined") { fo.style.cssText = ""; } if (retVal != "OK") { errorStrArray[errorStrArray.length] = retVal; failFields[failFields.length] = formObj[fields[i].getName()]; } else { rightnum ++; }
}
if (rightnum == fields.length) {
ret = true;
}if (errorStrArray.length > 0) {
if (showError == "alert") {
if (showType == "first") {
alert(errorStrArray[0]);
} else {
alert(errorStrArray.join(br));
}} else { var errObj = document.getElementById(showError); if (showType == "first") { errObj.innerHTML = errorStrArray[0]; } else { errObj.innerHTML = errorStrArray.join(br); } } if (typeof (failFields[0]) !='undefined' && failFields[0] != null && typeof(failFields[0].type) != "undefined") { failFields[0].focus(); } for (var i = 0; i < failFields.length; i++) { var o = failFields[i]; if ( typeof (o) !='undefined' && o != null && typeof(o.type) != "undefined") { o.style.cssText = ValidationFailCssStyle; } }
}
return ret;
}
/**
- Validation the field
- @param filed the field you want to validate. */ ValidationFramework.validateField = function(field) { var depends = field.getDepends(); var retStr = "OK"; for (var i = 0; i < depends.length; i++) { if (!ValidationFramework.validateDepend(field, depends[i])) { retStr = ValidationFramework.getErrorString(field, depends[i]); return retStr; //Break; } } return retStr; }
/**
- Validate the field depend.
- This function dispatch the various depends into ValidateMethodFactory.validateXXX */ ValidationFramework.validateDepend = function(field, depend) { if (depend.getName() == "required") { return ValidateMethodFactory.validateRequired(field, depend.getParams()); } else if (depend.getName() == "integer") { return ValidateMethodFactory.validateInteger(field, depend.getParams()); } else if (depend.getName() == "double") { return ValidateMethodFactory.validateDouble(field, depend.getParams()); } else if (depend.getName() == "commonChar") { return ValidateMethodFactory.validateCommonChar(field, depend.getParams()); } else if (depend.getName() == "chineseChar") { return ValidateMethodFactory.validateChineseChar(field, depend.getParams()); } else if (depend.getName() == "minLength") { return ValidateMethodFactory.validateMinLength(field, depend.getParams()); } else if (depend.getName() == "maxLength") { return ValidateMethodFactory.validateMaxLength(field, depend.getParams()); } else if (depend.getName() == "email") { return ValidateMethodFactory.validateEmail(field, depend.getParams()); } else if (depend.getName() == "date") { return ValidateMethodFactory.validateDate(field, depend.getParams()); } else if (depend.getName() == "time") { return ValidateMethodFactory.validateTime(field, depend.getParams()); } else if (depend.getName() == "mask") { return ValidateMethodFactory.validateMask(field, depend.getParams()); } else if (depend.getName() == "integerRange") { return ValidateMethodFactory.validateIntegerRange(field, depend.getParams()); } else if (depend.getName() == "doubleRange") { return ValidateMethodFactory.validateDoubleRange(field, depend.getParams()); } else if (depend.getName() == "equalsField") { return ValidateMethodFactory.validateEqualsField(field, depend.getParams()); } else { ValidationFramework.exception("还未实现该依赖: " + depend.getName()); return false; } }
// hold the current config file
var _validationConfigFile = "";
ValidationFramework.getDocumentElement = function() {
if (ValidationFramework._validationCache != null) {
return ValidationFramework._validationCache;
}
var file = "";
if (_validationConfigFile != "") {
file = _validationConfigFile;
} else {
file = ValidationRoot + "validation-config.xml";
}
var xmlDoc = XmlDocument.create();
xmlDoc.async = false; // Damn!!! it cost me half an hour to fix it!
xmlDoc.load(file);
if (xmlDoc.documentElement == null) {
ValidationFramework.exception("配置文件读取错误,请检查。");
return null;
}
// TODO: parse the document if it's a valid document.
ValidationFramework._validationCache = xmlDoc.documentElement;
var lang=ValidationFramework._validationCache.getAttribute("lang");
ValidationFramework._userLanguage = (lang==null) ? "auto" : lang;
return ValidationFramework._validationCache;
}
ValidationFramework.init = function(configFile) {
_validationConfigFile = configFile;
ValidationFramework.getDocumentElement();
}
ValidationFramework.getAllForms = function() {
var vforms = [];
var root = ValidationFramework.getDocumentElement();
if (root != null) {
var fs = root.childNodes;
for (var i = 0;i < fs.length ;i++ ) {
vforms[i] = new ValidationForm(fs.item(i));
}
}
return vforms;
}
ValidationFramework.getErrorString = function(field, depend) {
var stringResource = null;
var lang = ValidationFramework._userLanguage.toLowerCase();
//if lang == auto, get the user's browser language.
if (lang == "auto") {
// different browser has the different method the get the
// user's language. so this is a stupid way to detect the
// most common browser IE and Mozilla.
if (typeof navigator.userLanguage == 'undefined')
lang = navigator.language.toLowerCase();
else
lang = navigator.userLanguage.toLowerCase();
}
// get the language
if (typeof ValidationErrorString[lang] != 'object') {
stringResource = ValidationErrorString['zh-cn'];
} else {
stringResource = ValidationErrorString[lang];
}
var dep = depend.getName().toLowerCase();
var retStr = stringResource[dep];
//If the specified depend not defined, use the default error string.
if (typeof retStr != 'string') {
retStr = stringResource["default"];
retStr = retStr.replace("{0}", field.getDisplayName());
return retStr;
}
retStr = retStr.replace("{0}", field.getDisplayName());
if (dep == "minlength" || dep == "maxlength" || dep == "date" ) {
retStr = retStr.replace("{1}", depend.getParams()[0]);
} else if ( dep == "equalsfield") {
var eqField = field.getForm().findField(depend.getParams()[0]);
if (eqField == null) {
ValidationFramework.exception("找不到名称为[" + depend.getParams()[0]+"]的域,请检查xml配置文件。");
retStr = "<<配置错误>>";
} else {
retStr = retStr.replace("{1}", field.getForm().findField(depend.getParams()[0]).getDisplayName());
}
} else if (dep == "integerrange" || dep == "doublerange") {
retStr = retStr.replace("{1}", depend.getParams()[0]);
retStr = retStr.replace("{2}", depend.getParams()[1]);
}
return retStr;
}
ValidationFramework.getWebFormFieldObj = function(field) {
var obj = null;
if (ValidationFramework._currentForm != null) {
var formObj = document.getElementById(ValidationFramework._currentForm.getId());
obj = formObj[field.getName()];
if (typeof(obj) == 'undefined') {
obj = null;
}
}
if (obj == null) {
ValidationFramework.exception("在配置文件中有需要验证的域,但在实际网页表单中不存在:[name=" + field.getName() + "]。");
}
return obj;
}
ValidationFramework.exception = function(str) {
var ex = "JavaScript Validation Framework 运行时错误:\n\n";
ex += str;
ex += "\n\n\n任何运行错误都会导致该域验证失败。";
alert(ex);
}
ValidationFramework.getIntegerValue = function(val) {
var intvalue = parseInt(val);
if (isNaN(intvalue)) {
ValidationFramework.exception("期待一个整型参数。");
}
return intvalue;
}
ValidationFramework.getFloatValue = function(val) {
var floatvalue = parseFloat(val);
if (isNaN(floatvalue)) {
ValidationFramework.exception("期待一个浮点型参数。");
}
return floatvalue;
}
/**
- FormFactory
-
Build virture form from Html Form.
*/
function FormFactory() {}
FormFactory.getFormFromDOM = function(dom) {
var form = new ValidationForm();
form.setId(dom.getAttribute("id"));
form.setShowError(dom.getAttribute("show-error"));
form.setOnFail(dom.getAttribute("onfail"));
form.setShowType(dom.getAttribute("show-type"));if (dom.hasChildNodes()) {
var f = dom.childNodes;
for (var i = 0; i < f.length; i++) {
if (f.item(i) == null||typeof(f.item(i).tagName) == 'undefined' || f.item(i).tagName != 'field') {
continue;
}
var field = FieldFactory.getFieldFromDOM(f.item(i));
if (field != null) {
form.addField(field);
}
}
}
return form;
}
/// Get the Form from ID
FormFactory.getFormFromId = function(id) {
var root = ValidationFramework.getDocumentElement();
if ( root == null || (!root.hasChildNodes()) ) return null;
var vforms = root.childNodes;
for (var i = 0; i < vforms.length; i++) {
var f = vforms.item(i);
if (typeof(f.tagName) != 'undefined' && f.tagName == 'form' && f.getAttribute("id") == id) {
return FormFactory.getFormFromDOM(f);
}
}
return null;
}
/**
-
A validation form object.
*/
function ValidationForm() {
this._fields = [];
this._id = null;
this._showError = null;
this._onFail = null;
this._showType = null;this.getFields = function() { return this._fields; }
this.setFields = function(p0) { this._fields = p0; }this.getId = function() { return this._id; }
this.setId = function(p0) { this._id = p0; }this.getShowError = function() { return this._showError; }
this.setShowError = function(p0) { this._showError = p0; }this.getShowType = function() { return this._showType; }
this.setShowType = function(p0) { this._showType = p0; }this.getOnFail = function() { return this._onFail; }
this.setOnFail = function(p0) { this._onFail = p0; }// find field by it's name
this.findField = function(p0) {
for (var i = 0; i < this._fields.length; i++) {
if (this._fields[i].getName() == p0) {
return this._fields[i];
}
}
return null;
}this.addField = function(p0) {
this._fields[this._fields.length] = p0;
p0.setForm(this);
}
}
/**
-
A form filed. virtual.
*/
function ValidationField() {
this._name = null;
this._depends = [];
this._displayName = null;
this._onFail = null;
this._form = null;this.getName = function() { return this._name; }
this.setName = function(p0) { this._name = p0; }this.getDepends = function() { return this._depends; }
this.setDepends = function(p0) { this._depends = p0; }this.getDisplayName = function() { return this._displayName; }
this.setDisplayName = function(p0) { this._displayName = p0; }this.getOnFail = function() { return this._onFail; }
this.setOnFail = function(p0) { this._onFail = p0; }this.getForm = function() { return this._form; }
this.setForm = function(p0) { this._form = p0; }this.addDepend = function(p0) {
this._depends[this._depends.length] = p0;
}
}
///Factory methods for create Field
function FieldFactory() {}
FieldFactory.getFieldFromDOM = function(dom) {
var field = new ValidationField();
field.setName(dom.getAttribute("name"));
field.setDisplayName(dom.getAttribute("display-name"));
field.setOnFail(dom.getAttribute("onfail"));
if (dom.hasChildNodes()) {
var depends = dom.childNodes;
for (var i = 0; i < depends.length; i++) {
var item = depends.item(i);
if (typeof(item.tagName) == 'undefined' || item.tagName != 'depend') {
continue;
}
var dp = new ValidationDepend();
dp.setName(item.getAttribute("name"));
dp.addParam(item.getAttribute("param0"));
dp.addParam(item.getAttribute("param1"));
dp.addParam(item.getAttribute("param2"));
dp.addParam(item.getAttribute("param3"));
dp.addParam(item.getAttribute("param4"));
field.addDepend(dp);
}
}
return field;
}
function FormFieldUtils() {}
FormFieldUtils.findField = function(formName, fieldName) {
var formArr = ValidationFramework.getAllForms();
var theForm = null;
for (var i = 0; i < formArr.length; i++) {
if (formArr[i].getName() == formName) {
theForm = formArr[i];
}
}
if (theForm != null) {
return theForm.findField(fieldName);
} else {
return null;
}
}
/**
-
A validaton depend.
*/
function ValidationDepend() {
this._name = null;
this._params = [];this.getName = function() { return this._name; }
this.setName = function(p0) { this._name = p0; }this.getParams = function() { return this._params; }
this.setParams = function(p0) { this.params = p0; }this.addParam = function(p0) {
this._params[this._params.length] = p0;
}
}
function ValidateMethodFactory() {}
ValidateMethodFactory._methods = [];
ValidateMethodFactory.validateRequired = function(field, params) {
var obj = ValidationFramework.getWebFormFieldObj(field);
if (obj == null) return false;
if (typeof(obj.type) == "undefined") {
var tmp = 0;
for (var i = 0; i < obj.length; i++) {
if (obj[i].checked) {
return true;
}
}
return false;
}
if (obj.type == "checkbox" || obj.type == "radio") {
return (obj.checked);
} else {
return !(obj.value == "");
}
}
ValidateMethodFactory.validateInteger = function(field, params) {
var obj = ValidationFramework.getWebFormFieldObj(field);
if (obj == null) return false;
if (obj.value == "") return true;
var exp = new RegExp("^-?\d+$");
return exp.test(obj.value);
}
ValidateMethodFactory.validateDouble = function(field, params) {
var obj = ValidationFramework.getWebFormFieldObj(field);
if (obj == null) return false;
if (obj.value == "") return true;
var exp = new RegExp("^-?\d+.\d+$");
return exp.test(obj.value);
}
ValidateMethodFactory.validateCommonChar = function(field, params) {
var obj = ValidationFramework.getWebFormFieldObj(field);
if (obj == null) return false;
if (obj.value == "") return true;
var exp = new RegExp("^[A-Za-z0-9_]*$");
return exp.test(obj.value);
}
ValidateMethodFactory.validateChineseChar = function(field, params) {
var obj = ValidationFramework.getWebFormFieldObj(field);
if (obj == null) return false;
if (obj.value == "") return true;
var exp = new RegExp("^[\u4E00-\u9FA5\uF900-\uFA2D]*$");
return exp.test(obj.value);
}
ValidateMethodFactory.validateMinLength = function(field, params) {
var obj = ValidationFramework.getWebFormFieldObj(field);
if (obj == null) return false;
var v = ValidationFramework.getIntegerValue(params[0]);
return (obj.value.length >= v);
}
ValidateMethodFactory.validateMaxLength = function(field, params) {
var obj = ValidationFramework.getWebFormFieldObj(field);
if (obj == null) return false;
var v = ValidationFramework.getIntegerValue(params[0]);
return (obj.value.length <= v);
}
ValidateMethodFactory.validateEmail = function(field, params) {
var obj = ValidationFramework.getWebFormFieldObj(field);
if (obj == null) return false;
return ValidateMethodFactory.__checkEmail(obj.value);
}
ValidateMethodFactory.validateDate = function(field, params) {
var obj = ValidationFramework.getWebFormFieldObj(field);
if (obj == null) return false;
if (obj.value == "") return true;
var value = obj.value;
var datePattern = params[0];
var MONTH = "mm";
var DAY = "dd";
var YEAR = "yyyy";
var orderMonth = datePattern.indexOf(MONTH);
var orderDay = datePattern.indexOf(DAY);
var orderYear = datePattern.indexOf(YEAR);
var bValid = true;
var dateRegexp = null;
if ((orderDay < orderYear && orderDay > orderMonth)) {
var iDelim1 = orderMonth + MONTH.length;
var iDelim2 = orderDay + DAY.length;
var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
if (iDelim1 == orderDay && iDelim2 == orderYear) {
dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
} else if (iDelim1 == orderDay) {
dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
} else if (iDelim2 == orderYear) {
dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
} else {
dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
}
var matched = dateRegexp.exec(value);
if(matched != null) {
if (!ValidateMethodFactory.__isValidDate(matched[2], matched[1], matched[3])) {
bValid = false;
}
} else {
bValid = false;
}
} else if ((orderMonth < orderYear && orderMonth > orderDay)) {
var iDelim1 = orderDay + DAY.length;
var iDelim2 = orderMonth + MONTH.length;
var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
if (iDelim1 == orderMonth && iDelim2 == orderYear) {
dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
} else if (iDelim1 == orderMonth) {
dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
} else if (iDelim2 == orderYear) {
dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
} else {
dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
}
var matched = dateRegexp.exec(value);
if(matched != null) {
if (!ValidateMethodFactory.__isValidDate(matched[1], matched[2], matched[3])) {
bValid = false;
}
} else {
bValid = false;
}
} else if ((orderMonth > orderYear && orderMonth < orderDay)) {
var iDelim1 = orderYear + YEAR.length;
var iDelim2 = orderMonth + MONTH.length;
var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
if (iDelim1 == orderMonth && iDelim2 == orderDay) {
dateRegexp = new RegExp("^(\\d{4})(\\d{2})(\\d{2})$");
} else if (iDelim1 == orderMonth) {
dateRegexp = new RegExp("^(\\d{4})(\\d{2})[" + delim2 + "](\\d{2})$");
} else if (iDelim2 == orderDay) {
dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})(\\d{2})$");
} else {
dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{2})$");
}
var matched = dateRegexp.exec(value);
if(matched != null) {
if (!ValidateMethodFactory.__isValidDate(matched[3], matched[2], matched[1])) {
bValid = false;
}
} else {
bValid = false;
}
} else {
bValid = false;
}
return bValid;
}
ValidateMethodFactory.validateTime = function(field, params) {
////NOT IMPLEMENT YET SINCE IT'S NOT USEFUL.
return true;
}
ValidateMethodFactory.validateMask = function(field, params) {
var obj = ValidationFramework.getWebFormFieldObj(field);
if (obj == null) return false;
if (obj.value == "") return true;
var exp = new RegExp(params[0]);
//FIXME: this method may be buggy, need more test.
return exp.test(obj.value);
}
ValidateMethodFactory.validateIntegerRange = function(field, params) {
var obj = ValidationFramework.getWebFormFieldObj(field);
if (obj == null) return false;
if (obj.value == "") return true;
var p0 = ValidationFramework.getIntegerValue(params[0]);
var p1 = ValidationFramework.getIntegerValue(params[1]);
if (ValidateMethodFactory.validateInteger(field)) {
var v = parseInt(obj.value);
return (v >= p0 && v <= p1);
} else {
return false;
}
return true;
}
ValidateMethodFactory.validateDoubleRange = function(field, params) {
var obj = ValidationFramework.getWebFormFieldObj(field);
if (obj == null) return false;
if (obj.value == "") return true;
var p0 = ValidationFramework.getFloatValue(params[0]);
var p1 = ValidationFramework.getFloatValue(params[1]);
if (ValidateMethodFactory.validateInteger(field) || ValidateMethodFactory.validateDouble(field)) {
var v = parseFloat(obj.value);
return (v >= p0 && v <= p1);
} else {
return false;
}
return true;
}
ValidateMethodFactory.validateEqualsField = function(field, params) {
var obj = ValidationFramework.getWebFormFieldObj(field);
if (obj == null) return false;
var formObj = document.getElementById(ValidationFramework._currentForm.getId());
var eqField = formObj[params[0]];
if (eqField != null) {
return (obj.value == eqField.value)
} else {
return false;
}
}
ValidateMethodFactory.__isValidDate = function(day, month, year) {
if (month < 1 || month > 12) return false;
if (day < 1 || day > 31) return false;
if ((month == 4 || month == 6 || month == 9 || month == 11) &&(day == 31))
return false;
if (month == 2) {
var leap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (day>29 || (day == 29 && !leap)) return false;
}
return true;
}
/**
- Reference: Sandeep V. Tamhankar (stamhankar@hotmail.com),
-
http://javascript.internet.com
/
ValidateMethodFactory.__checkEmail = function(emailStr) {
if (emailStr.length == 0) {
return true;
}
var emailPat=/^(.+)@(.+)$/;
var specialChars="\(\)<>@,;:\\\\"\.\[\]";
var validChars="[^\s" + specialChars + "]";
var quotedUser="(\"[^\"]\")";
var ipDomainPat=/^(\d{1,3})...$/;
var atom=validChars + '+';
var word="(" + atom + "|" + quotedUser + ")";
var userPat=new RegExp("^" + word + "(\." + word + ")*$");
var domainPat=new RegExp("^" + atom + "(\." + atom + ")*$");
var matchArray=emailStr.match(emailPat);
if (matchArray == null) {
return false;
}
var user=matchArray[1];
var domain=matchArray[2];
if (user.match(userPat) == null) {
return false;
}
var IPArray = domain.match(ipDomainPat);
if (IPArray != null) {
for (var i = 1; i <= 4; i++) {
if (IPArray[i] > 255) {
return false;
}
}
return true;
}
var domainArray=domain.match(domainPat);
if (domainArray == null) {
return false;
}
var atomPat=new RegExp(atom,"g");
var domArr=domain.match(atomPat);
var len=domArr.length;
if ((domArr[domArr.length-1].length < 2) ||
(domArr[domArr.length-1].length > 3)) {
return false;
}
if (len < 2) {
return false;
}
return true;
}
////Language Definitions
var ValidationErrorString = new Object();
////Simplified Chinese(zh-ch)
ValidationErrorString["zh-cn"] = new Object();
ValidationErrorString["zh-cn"]["default"]="域{0}校验失败。";
ValidationErrorString["zh-cn"]["required"]="{0}不能为空。
";
ValidationErrorString["zh-cn"]["integer"]="{0}必须是一个整数。";
ValidationErrorString["zh-cn"]["double"]="{0}必须是一个浮点数(带小数点)。";
ValidationErrorString["zh-cn"]["commonchar"] = "{0}必须是普通英文字符:字母,数字和下划线。
";
ValidationErrorString["zh-cn"]["chinesechar"] = "{0}必须是中文字符。";
ValidationErrorString["zh-cn"]["minlength"]="{0}长度不能小于{1}个字符。";
ValidationErrorString["zh-cn"]["maxlength"]="{0}长度不能大于{1}个字符。" ;
ValidationErrorString["zh-cn"]["invalid"]="{0}无效。";
ValidationErrorString["zh-cn"]["date"]="{0}不是一个有效日期,期待格式:{1}。";
ValidationErrorString["zh-cn"]["integerrange"]="{0}必须在整数{1}和{2}之间。";
ValidationErrorString["zh-cn"]["doublerange"]="{0}必须在浮点数{1}和{2}之间。";
ValidationErrorString["zh-cn"]["pid"]="{0}不是一个有效身份证号。";
ValidationErrorString["zh-cn"]["email"]="{0}不是一个有效的Email。";
ValidationErrorString["zh-cn"]["equalsfield"]="{0}必须和{1}一致。";
////English(en-us)
ValidationErrorString["en-us"] = new Object();
ValidationErrorString["en-us"]["default"]="Failed when validating filed {0}.";
ValidationErrorString["en-us"]["required"]="{0} is required.";
ValidationErrorString["en-us"]["integer"]="{0} must be a integer.";
ValidationErrorString["en-us"]["double"]="{0} must be a double value. ";
ValidationErrorString["en-us"]["commonchar"] = "{0} should be common ascii characters, A-Z,a-z and undercore. ";
ValidationErrorString["en-us"]["chinesechar"] = "{0} must be chinese characters. ";
ValidationErrorString["en-us"]["minlength"]="{0} cannot be less then {1}. ";
ValidationErrorString["en-us"]["maxlength"]="{0} cannot be more then {1}. ";
ValidationErrorString["en-us"]["invalid"]="{0} in invalid. ";
ValidationErrorString["en-us"]["date"]="{0} is not an invalid date format: {1}. ";
ValidationErrorString["en-us"]["integerrange"]="{0} should be between number {1} and {2}. ";
ValidationErrorString["en-us"]["doublerange"]="{0} should be between double {1} and {2}. ";
ValidationErrorString["en-us"]["pid"]="{0} is not an valid pid. ";
ValidationErrorString["en-us"]["email"]="{0} is not an valid email address. ";
ValidationErrorString["en-us"]["equalsfield"]="{0} should be agree with field {1}. ";
// preload the validation file.
//ValidationFramework.getDocumentElement();`
4xml代码
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE validation-config SYSTEM "validation-config.dtd">
<validation-config lang="auto">
<form id="form1" show-error="alert" show-type="all">
<field name="name" display-name="姓名" onfail="">
<depend name="required" />
<depend name="commonChar" />
<depend name="minLength" param0="3" />
<depend name="maxLength" param0="20" />
</field>
<field name="email" display-name="email邮箱">
<depend name="required" />
<depend name="email" />
</field>
<field name="age" display-name="年龄">
<depend name="required" />
</field>
<field name="protime" display-name="编程时间">
<depend name="required" />
</field>
<field name="os" display-name="使用的操作系统">
<depend name="required" />
</field>
<field name="lang" display-name="使用的编程语言">
<depend name="required" />
</field>
<field name="editor1" display-name="建议">
<depend name="required" />
</field>
</form>
</validation-config>
5jsp代码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'Login.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<script type='text/javascript' src='ckeditor/ckeditor.js'></script>
<script type='text/javascript' src='/js/validation-framework.js'></script>
<body>
<h1>潜在用户网络调查</h1>
<form action='LoginServlet' name='form1' id='form1' method='post'
onSubmit="return doValidate(this)">
姓名:<input type='text' name='name' value='' /><br/>
EMAIL:<input type='text' name='email' value=''/><br/>
年纪:<input type='radio' name='age' value='小于18' />小于18
<input type='radio' name='age' value='18-25'/>18-25
<input type='radio' name='age' value='26-40'/>26-40
<input type='radio' name='age' value='大于40'/>大于40<br/>
编程时间:<select name='protime'>
<option value='6-12月' >6-12月</option>
<option value='12-24月'>12-24月</option>
<option value='24月以上'>24月以上</option>
</select><br/>
使用操作系统:<select name='os' multiple='multiple' size='6'>
<option value='Win XP'>Win XP</option>
<option value='Win 2000/2003'>Win 2000/2003</option>
<option value='Linux'>Linux</option>
<option value='FreeBSD'>FreeBSD</option>
<option value='Mac OS'>Mac OS</option>
<option value='Other'>Other</option>
</select><br/>
使用的编程语言:<input type='checkbox' name='lang' value='C'/>C
<input type='checkbox' name='lang' value='C++'/>C++
<input type='checkbox' name='lang' value='C#'/>C#
<input type='checkbox' name='lang' value='PYTHON'/>PYTHON
<input type='checkbox' name='lang' value='JAVA'/>JAVA
<input type='checkbox' name='lang' value='VB'/>VB
<input type='checkbox' name='lang' value='DEPHI'/>DEPHI<br/>
建议:<textarea class='ckeditor' cols='50' id='editor1' name='editor1' rows='10'></textarea><br/>
<input type='submit' value='提交'>
<input type='reset' value='重置'>
<input type='hidden' name='ring' value='normal'><br/>
<% HttpSession hs=request.getSession(true);
hs.setAttribute("write", "yes"); %>
</form>
</body>
</html>