读书人

javascript证验

发布时间: 2012-11-25 11:44:31 作者: rapoo

javascript验证

为了提交web页面开发效率,自己封装了一套web页面输入框验证方法:

1、首先是ArrayList对象

该ArrayList对象和java中ArrayList对象用法基本一样,包含了java中ArrayList中大部分方法,为存取对象提供了便利。

/*********************************************************** JavaScript实现的ArrayList类 * * @author {yangl}* @version $Revision: 0.5 $ $Date: 2008/04/02 15:00:00 $* @description* Method:* add(element);* addElementAt(index, element);* contains(element);* get(index);* isEmpty(index);* indexOf(element);* lastIndexOf(element);* remove()* setElementAt(index, element);* size();* toString();* @example* var arrList = new ArrayList();* //var arrList = new ArrayList(10);* arrList.add("000");* arrList.add("001");* arrList.add("002");**********************************************************/// JavaScript ArrayList/**Method:        add(element);        addElementAt(index, element);        contains(element);        get(index);        isEmpty(index);        indexOf(element);        lastIndexOf(element);        remove(index);        setElementAt(index, element);        size();        toString();*//**Example:        var arrList = new ArrayList();        //var arrList = new ArrayList(10);        arrList.add("000");        arrList.add("001");        arrList.add("002");*/var ArrayList = function () {    var args = ArrayList.arguments;    var initialCapacity = 10;        if (args != null && args.length > 0) {        initialCapacity = args[0];    }        var elementData = new Array(initialCapacity);    var elementCount = 0;        this.size = function () {        return elementCount;    };        this.add = function (element) {        //alert("add");        ensureCapacity(elementCount + 1);        elementData[elementCount++] = element;        return true;    };        this.addElementAt = function (index, element) {        //alert("addElementAt");        if (index > elementCount || index < 0) {            alert("IndexOutOfBoundsException, Index: " + index + ", Size: " + elementCount);            return;            //throw (new Error(-1,"IndexOutOfBoundsException, Index: "+index+", Size: " + elementCount));        }        ensureCapacity(elementCount + 1);        for (var i = elementCount + 1; i > index; i--) {            elementData[i] = elementData[i - 1];        }        elementData[index] = element;        elementCount++;    };        this.setElementAt = function (index, element) {        //alert("setElementAt");        if (index > elementCount || index < 0) {            alert("IndexOutOfBoundsException, Index: " + index + ", Size: " + elementCount);            return;            //throw (new Error(-1,"IndexOutOfBoundsException, Index: "+index+", Size: " + elementCount));        }        elementData[index] = element;    };        this.toString = function () {        //alert("toString()");        var str = "{";        for (var i = 0; i < elementCount; i++) {            if (i > 0) {                str += ",";            }            str += elementData[i];        }        str += "}";        return str;    };        this.get = function (index) {        //alert("elementAt");        if (index >= elementCount) {            alert("ArrayIndexOutOfBoundsException, " + index + " >= " + elementCount);            return;            //throw ( new Error( -1,"ArrayIndexOutOfBoundsException, " + index + " >= " + elementCount ) );        }        return elementData[index];    };        this.remove = function (index) {        if (index >= elementCount) {            alert("ArrayIndexOutOfBoundsException, " + index + " >= " + elementCount);            //return;            throw (new Error(-1, "ArrayIndexOutOfBoundsException, " + index + " >= " + elementCount));        }        var oldData = elementData[index];        for (var i = index; i < elementCount - 1; i++) {            elementData[i] = elementData[i + 1];        }        elementData[elementCount - 1] = null;        elementCount--;        return oldData;    };        this.isEmpty = function () {        return elementCount == 0;    };        this.indexOf = function (elem) {        //alert("indexOf");        for (var i = 0; i < elementCount; i++) {            if (elementData[i] == elem) {                return i;            }        }        return -1;    };        this.lastIndexOf = function (elem) {        for (var i = elementCount - 1; i >= 0; i--) {            if (elementData[i] == elem) {                return i;            }        }        return -1;    };        this.contains = function (elem) {        return this.indexOf(elem) >= 0;    };        function ensureCapacity(minCapacity) {        var oldCapacity = elementData.length;        if (minCapacity > oldCapacity) {            var oldData = elementData;            var newCapacity = parseInt((oldCapacity * 3) / 2 + 1);            if (newCapacity < minCapacity) {                newCapacity = minCapacity;            }            elementData = new Array(newCapacity);            for (var i = 0; i < oldCapacity; i++) {                elementData[i] = oldData[i];            }        }    }};

?2、测试类

为了提高编程的灵活性,将每种检测情况封装成一个一个小测试类,比如是否可以为空,字符长度等,且每个测试类中必须有一个方法test用于检测输入框数据是否满足条件,满足返回1,否则返回0。

例如输入框不能为空:

/********************************************************** * 输入框不可以为空 * @param lable  lable名称 * @param input  输入框name * @returns **********************************************************/function NoNullCellTest(lable, input){this.lableName = lable;this.inputName = input;this.test = function(){var inputObj = document.getElementsByName(this.inputName)[0];var str = inputObj.value;if(str == ''){alert(this.lableName+"不可以为空!");inputObj.focus();return 0;}return 1;};}

?3、主测试对象

主测试对象是运用责任链模式,可以将各种测试类对象串联起来,便于检测输入框是否满足特定条件

?

/********************************************************** * 主测试对象(责任链模式) * 通过addTest方法将单元测试对象添加到列表中 * test方法开始检测 * @returns **********************************************************/function MainTest(){this.arrList = new ArrayList();this.addTest=function(cellTest){this.arrList.add(cellTest);return this;};this.test=function(){for(var i = 0; i < this.arrList.size(); i++){var test = this.arrList.get(i);var returnValue = test.test();if(returnValue == 0){return 0;}}return 1;};}

?

4、实例

如果页面姓名输入框要求满足不能为空、只能长度为3~4个汉字

//姓名检测var nameNoNullTest = new NoNullCellTest("姓名","userVo.string(name)");var nameLengthTest = new LengthCellTest("姓名","userVo.string(name)",2,8);var nameChineseTest = new ChineseCellTest("姓名","userVo.string(name)");var nameMainTest = new MainTest();nameMainTest.addTest(nameNoNullTest).addTest(nameLengthTest).addTest(nameChineseTest);//姓名检测function nameTest(){nameMainTest.test();}

??

读书人网 >JavaScript

热点推荐