首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

不要jquery插件,自己用jquery写的表单验证

2013-02-27 
不用jquery插件,自己用jquery写的表单验证!例如:让用户输入:用户名、密码、确认密码等。不采用formValidator

不用jquery插件,自己用jquery写的表单验证!
例如:让用户输入:用户名、密码、确认密码等。不采用formValidator等这样的插件,自己手写出来的表单验证模式!求大仙们给我写一个demo
[解决办法]

(function ($) {
    $(document).ready(function () {
        $('body').append('<table id="tipTable" class="tableTip"><tr><td  class="leftImage"></td> <td class="contenImage" align="left"></td> <td class="rightImage"></td></tr></table>');
        var dataName = "Product";
        var checkSubmit = (function () {
            $.ajax({
                url: "validate.xml",
                dataType: "xml",
                type: 'get',
                error: function (xml) {
                    alert('Error loading XML document' + xml);
                },
                success: function (xml) {

                    $(xml).find("Data[Name='" + dataName + "']").find("Item").each(function () {
                        var name = $(this).attr("Name");

                        var isNull = $(this).attr("IsNull");
                        var reg = $(this).attr("Reg");
                        var tip = $(this).attr("Tip");
                        //给对应的元素添加focus事件以及blur事件
                        $("#" + name).mouseover(function () {
                            if (tip != "") {
                                $('#tipTable').css({ left: $.getLeft(this) + 'px', top: $.getTop(this) + 'px' });
                                $('.contenImage').html(tip);


                                $('#tipTable').fadeIn("fast");
                                //  settipTableOut(name);
                            }
                        }).blur(function () {
                            //根据具体的逻辑判断当前 元素是否输入正确
                            //如果不允许为空
                            if (isNull == "true") {
                                //如果条件不允许为这且值为空
                                if ($("#" + name).val() == "") {

                                    settipTableOut(name);

                                } else {
                                    //如果条件不允许为空且值也不为空
                                    if (reg != "") {
                                        //表示需要启动正则进行验证

                                        var regex = new RegExp(reg);
                                        if (!regex.test($("#" + name).val())) {
                                            //错误提示
                                            settipTableOut(name);



                                        } else {
                                            //去除样式
                                            settipTableIn(name);
                                        }
                                    } else {
                                        settipTableIn(name);
                                    }
                                }

                            } else {
                                //如果条件为空,且reg 不为空则表示要验证
                                if ($("#" + name).val() != "" && reg != "") {
                                    var regex = new RegExp(reg);
                                    if (!regex.test($("#" + name).val())) {
                                        //错误提示
                                        settipTableOut(name);

                                    } else {
                                        settipTableIn(name);


                                    }
                                } else {
                                    settipTableIn(name);
                                }
                            }
                        });
                    });
                }
            });

        });
        var settipTableOut = (function (name) {
            $("#" + name).removeClass('tooltipinputok').addClass('tooltipinputerr');
            $('#tipTable').fadeOut("fast");

        });
        var settipTableIn = (function (name) {
            $("#" + name).removeClass('tooltipinputerr').addClass('tooltipinputok');
        });

        checkSubmit("Product");
        $("form").submit(function () {

            $.ajax({
                url: "validate.xml",
                dataType: "xml",
                type: 'get',
                error: function (xml) {
                    alert('Error loading XML document' + xml);
                },
                success: function (xml) {
                    var isSubmit = true;
                    $(xml).find("Data[Name='" + dataName + "']").find("Item").each(function () {
                        var name = $(this).attr("Name");


                        var isNull = $(this).attr("IsNull");
                        var reg = $(this).attr("Reg");
                        var tip = $(this).attr("Tip");
                        readXmlStatus = true;
                        //给对应的元素添加focus事件以及blur事件
                        if (tip != "") {
                            $('#tipTable').css({ left: $.getLeft(this) + 'px', top: $.getTop(this) + 'px' });
                            $('.contenImage').html(tip);
                            $('#tipTable').fadeIn("fast");
                            //  settipTableOut(name);
                        }

                        //根据具体的逻辑判断当前 元素是否输入正确
                        //如果不允许为空
                        if (isNull == "true") {
                            //如果条件不允许为这且值为空
                            if ($("#" + name).val() == "") {
                                settipTableOut(name);
                                isSubmit = false;
                            } else {
                                //如果条件不允许为空且值也不为空
                                if (reg != "") {


                                    //表示需要启动正则进行验证
                                    var regex = new RegExp(reg);
                                    if (!regex.test($("#" + name).val())) {
                                        //错误提示
                                        settipTableOut(name);
                                        isSubmit = false;
                                    } else {
                                        //去除样式
                                        settipTableIn(name);
                                    }
                                } else {
                                    settipTableIn(name);
                                }
                            }

                        } else {
                            //如果条件为空,且reg 不为空则表示要验证
                            if ($("#" + name).val() != "" && reg != "") {
                                var regex = new RegExp(reg);


                                if (!regex.test($("#" + name).val())) {
                                    //错误提示
                                    settipTableOut(name);
                                    isSubmit = false;
                                } else {
                                    settipTableIn(name);
                                }
                            } else {
                                settipTableIn(name);
                            }
                        }
                    });

                    if (isSubmit == true)
                        alert("可以提交表单");
                    else {
                        alert("不可以提交表单");
                    }
                }
            });


            return false;
        });

        $.extend({
            getWidth: function (object) {
                return object.offsetWidth;
            },

            getLeft: function (object) {


                var go = object;
                var oParent, oLeft = go.offsetLeft;
                while (go.offsetParent != null) {
                    oParent = go.offsetParent;
                    oLeft += oParent.offsetLeft;
                    go = oParent;
                }
                return oLeft;
            },

            getTop: function (object) {
                var go = object;
                var oParent, oTop = go.offsetTop;
                while (go.offsetParent != null) {
                    oParent = go.offsetParent;
                    oTop += oParent.offsetTop;
                    go = oParent;
                }
                return oTop + $(object).height() + 5;
            },

            onsubmit: true
        });
    });


 


[解决办法]
  $.extend({
        getWidth: function (object) {
            return object.offsetWidth;
        },

        getLeft: function (object) {
            var go = object;
            var oParent, oLeft = go.offsetLeft;
            while (go.offsetParent != null) {
                oParent = go.offsetParent;
                oLeft += oParent.offsetLeft;
                go = oParent;


            }
            return oLeft;
        },

        getTop: function (object) {
            var go = object;
            var oParent, oTop = go.offsetTop;
            while (go.offsetParent != null) {
                oParent = go.offsetParent;
                oTop += oParent.offsetTop;
                go = oParent;
            }
            return oTop + $(object).height() + 5;
        },

        onsubmit: true
    });
  
})(jQuery);

//***************************************************************************************************************************************************
//利用JQuery功能对标签属性设置表达式
//传入的标签ID组必须为"name1:name2:name3"中间用':'分隔.


//对所有需要整数验证的标签进行设置正则表达式
function setIntegeCheck(validatorString) {
    var validatorStrings = "";
    if (validatorString != "") {
        validatorStrings = validatorString.split(":");
        for (i = 0; i < validatorStrings.length; i++) {
            $("#" + validatorStrings[i]).attr("reg", "^[1-9]\\d*$");
        }
    }
}

//对所有需要金额验证的标签进行设置正则表达式
function setMoneyCheck(validatorString) {
    var validatorStrings = "";
    if (validatorString != "") {
        validatorStrings = validatorString.split(":");
        for (i = 0; i < validatorStrings.length; i++) {
            $("#" + validatorStrings[i]).attr("reg", "^(-)?(([1-9]{1}\\d*)
[解决办法]
([0]{1}))(\\.(\\d){1,2})?$");
        }
    }
}

//对所有需要正浮点验证的标签进行设置正则表达式
function setFloatCheck(validatorString) {
    var validatorStrings = "";
    if (validatorString != "") {
        validatorStrings = validatorString.split(":");
        for (i = 0; i < validatorStrings.length; i++) {
            $("#" + validatorStrings[i]).attr("reg", "^[0-9]+\\.[0-9]+$");
        }


    }
}

//对所有需要电子邮件验证的标签进行设置正则表达式
function setMailCheck(validatorString) {
    var validatorStrings = "";
    if (validatorString != "") {
        validatorStrings = validatorString.split(":");
        for (i = 0; i < validatorStrings.length; i++) {
            $("#" + validatorStrings[i]).attr("reg", "^\\w+((-\\w+)
[解决办法]
(\\.\\w+))*\\@[A-Za-z0-9]+((\\.
[解决办法]
-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$");
        }
    }
}

//对所有需要邮编验证的标签进行设置正则表达式
function setZipcodeCheck(validatorString) {
    var validatorStrings = "";
    if (validatorString != "") {
        validatorStrings = validatorString.split(":");
        for (i = 0; i < validatorStrings.length; i++) {
            $("#" + validatorStrings[i]).attr("reg", "^\\d{6}$");
        }
    }
}

//对所有需要手机验证的标签进行设置正则表达式
function setMobileCheck(validatorString) {
    var validatorStrings = "";
    if (validatorString != "") {
        validatorStrings = validatorString.split(":");
        for (i = 0; i < validatorStrings.length; i++) {
            $("#" + validatorStrings[i]).attr("reg", "^(13
[解决办法]
15)[0-9]{9}$");
        }
    }
}

//对所有需要身份证验证的标签进行设置正则表达式
function setIDCheck(validatorString) {
    var validatorStrings = "";
    if (validatorString != "") {
        validatorStrings = validatorString.split(":");
        for (i = 0; i < validatorStrings.length; i++) {
            $("#" + validatorStrings[i]).attr("reg", "^[1-9]([0-9]{14}
[解决办法]
[0-9]{17})$");
        }
    }
}

//对所有需要登录帐号验证的标签进行设置正则表达式
function setUserIDCheck(validatorString) {
    var validatorStrings = "";
    if (validatorString != "") {
        validatorStrings = validatorString.split(":");
        for (i = 0; i < validatorStrings.length; i++) {
            $("#" + validatorStrings[i]).attr("reg", "^\\w+$");


        }
    }
}

//对所有需要非空验证的标签进行设置正则表达式
function setEmptyCheck(validatorString) {

    var validatorStrings = "";
    if (validatorString != "") {
        validatorStrings = validatorString.split(":");
        for (i = 0; i < validatorStrings.length; i++) {
            $("#" + validatorStrings[i]).attr("reg", '.*\\S.*');
        }
    }
}

//对所有需要中文验证的标签进行设置正则表达式
function setChineseCheck(validatorString) {
    var validatorStrings = "";
    if (validatorString != "") {
        validatorStrings = validatorString.split(":");
        for (i = 0; i < validatorStrings.length; i++) {
            $("#" + validatorStrings[i]).attr("reg", "^[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+$");
        }
    }
}

//对所有需要URL验证的标签进行设置正则表达式
function setURLCheck(validatorString) {
    var validatorStrings = "";
    if (validatorString != "") {
        validatorStrings = validatorString.split(":");
        for (i = 0; i < validatorStrings.length; i++) {
            $("#" + validatorStrings[i]).attr("reg", "^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&=]*)?$");
        }
    }
}
//匹配国内电话号码(0511-4405222 或 021-87888822) 
function setTell(validatorString) {
    var validatorStrings = "";
    if (validatorString != "") {
        validatorStrings = validatorString.split(":");
        for (i = 0; i < validatorStrings.length; i++) {
            $("#" + validatorStrings[i]).attr("reg", "\\d{3}-\\d{8}
[解决办法]
\\d{4}-\\d{7}");
        }
    }
}

热点排行
Bad Request.