wuruize888
2017-05-21 03:13
采纳率: 88.2%
浏览 854

一个jquery判断表单的代码,请师傅们帮看看。谢谢

自己练习做个自动表单判断的代码,现存在一个问题,因为涉及到判断用户输入信息是否正确,有个提示信息,现在可以通过setErrmsg提示,正确后不能通过reErrmsg删除,有个想法,通过errid来设置每次插入的li的id,然后在根据这个标记在删除,现在看来技术存在很大问题,因为errid不同步貌似,哪位师傅帮忙一下,或有没有其它办法,谢谢。


<form>
    <div>
        <input id="input1" type="text" mtype="str:4:15">   
        <span>
            <ul>信息插这里</ul>
        </span>
        这里的str:4:15代表str是处理字符串,最小4个,最长15个。
            <input id="input2" type="text" mtype="str:4:15">     
        <span>
            <ul>信息插这里</ul>
        </span>
        <input type="submit" value="submit">
    </div>
    </form>




$(function () {

    var bool = true;
    var aA = "[a-zA-Z]"; 
    var aAs = "[a-zA-Z0-9_]"; 
    var errc = "[~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]"; 
    var errid = 0;   
    //var 

    $('form :input').keyup(function () {

        var jqs = $("#" + $(this).attr("id")).attr("mtype");
        var inValue = $(this).val();
        var mtystr = jqs.split(":")[0].toLocaleUpperCase();
        var minl = jqs.split(":")[1];
        var maxl = jqs.split(":")[2];
        var errmsg = "";
        $(this).attr("maxlength", maxl);

        var thisID = $(this).attr("id");

        errid++;

        if (mtystr === "STR") { //处理数据

            var fi = new RegExp(aA + "+");
            var re = new RegExp(aA + "+" + aAs + "*");
            var err = new RegExp(errc);
            var removeid;

            var errmsg = "";

            if (err.test(inValue)) {
                alert(thisID);
                setErrmsg(thisID, errid, "请不要输入特殊字符!");
                bool = false;
            } else {
                reErrmsg(thisID, errid);
                //bool = true;
            }

            if (!fi.test(inValue)) {
                alert(thisID);
                setErrmsg(thisID, errid, "此处首字符必须是字母!");
                bool = false;
            } else {
                reErrmsg(thisID, errid);
                //bool = true;
            }

            if (!re.test(inValue)) {
                alert(thisID);
                setErrmsg(thisID, errid, "请按照标准填写,首位是字母+数字形式!");
                bool = false;
            } else {
                reErrmsg(thisID, errid);

            }

            if (inValue.length < minl || inValue.length > maxl) {
                alert(thisID);
                setErrmsg(thisID, errid, "输入值的长度要求至少" + minl + "个字符,最多" + maxl + "个字符。");
                bool = false;
            } else {
                reErrmsg(thisID, errid);
            }



        } else if (mtystr === "INT") {

            var intstr = "^[0-9]+$";
            var ints = new RegExp(intstr);

            if (!ints.test(inValue)) {
                alert(thisID);
                setErrmsg(thisID, errid, "请输入数字格式,且不能有小数点。");
                bool = false;
            } else {
                reErrmsg(thisID, errid);
            }

            if (inValue.length < minl || inValue.length > maxl) {
                alert(thisID);
                setErrmsg(thisID, errid, "输入值的长度要求至少" + minl + "个字符,最多" + maxl + "个字符。");
                bool = false;
            } else {
                reErrmsg(thisID, errid);
            }

        } else if (mtystr === "MAIL") {
            var mailstr = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z])+$";
            var mails = new RegExp(mailstr);

            if (!mails.test(inValue)) {
                alert(thisID);
                setErrmsg(thisID, errid, "请输入正确的邮箱地址。");
                bool = false;
            } else {
                reErrmsg(thisID, errid);
            }

        }

        return bool;
    });

    $('form :submit').click(function () {
        if (bool) {
            return true;
        } else {
            return false;
        }
    });

    function setErrmsg(obj, errid, errinfo) {//用于插入span里信息的函数
        obj = $("#" + obj);
        alert("obj=" + obj + " errid=" + errid + " errinfo=" + errinfo);
        obj.next("span").find("ul").find("#" + errid).remove();
        obj.next("span").find("ul").append("<li id=\"" + errid + "\">" + errinfo + "</li>");
    }

    function reErrmsg(obj, errid) { //用于从span里删除信息的函数
        obj = $("#" + obj);
        obj.next("span").find("ul").find("#" + errid).remove();
    }

});


  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 已采纳

    id你可以结合input的id,然后不同错误加不同前缀来确定,而不是通过errId全局变量,要不你errId一直增加获取不到对应的错误li容器

    
            $('form :input').keyup(function () {
    
                var jqs = $("#" + $(this).attr("id")).attr("mtype");
                var inValue = $(this).val();
                var mtystr = jqs.split(":")[0].toLocaleUpperCase();
                var minl = jqs.split(":")[1];
                var maxl = jqs.split(":")[2];
                var errmsg = "";
                $(this).attr("maxlength", maxl);
    
                var thisID = $(this).attr("id");
    
                errid++;
    
                if (mtystr === "STR") { //处理数据
    
                    var fi = new RegExp(aA + "+");
                    var re = new RegExp(aA + "+" + aAs + "*");
                    var err = new RegExp(errc);
                    var removeid;
    
                    var errmsg = "";
    
                    if (err.test(inValue)) {
                      //  alert(thisID);
                        setErrmsg(thisID, thisID + 'errc', "请不要输入特殊字符!");////////////
                        bool = false;
                    } else {
                        reErrmsg(thisID, thisID + 'errc');////////////
                        //bool = true;
                    }
    
                    if (!fi.test(inValue)) {
                    //    alert(thisID);
                        setErrmsg(thisID, thisID + 'aA', "此处首字符必须是字母!");////////////
                        bool = false;
                    } else {
                        reErrmsg(thisID, thisID + 'aA');////////////
                        //bool = true;
                    }
    
                    if (!re.test(inValue)) {
                       // alert(thisID);
                        setErrmsg(thisID, thisID + 'aAs', "请按照标准填写,首位是字母+数字形式!");////////////
                        bool = false;
                    } else {
                        reErrmsg(thisID, thisID + 'aAs');////////////
    
                    }
    
                    if (inValue.length < minl || inValue.length > maxl) {
                       /// alert(thisID);
                        setErrmsg(thisID, thisID + 'Length', "输入值的长度要求至少" + minl + "个字符,最多" + maxl + "个字符。");////////////
                        bool = false;
                    } else {
                        reErrmsg(thisID, thisID + 'Length');////////////
                    }
    
    
    
                } else if (mtystr === "INT") {
    
                    var intstr = "^[0-9]+$";
                    var ints = new RegExp(intstr);
    
                    if (!ints.test(inValue)) {
                        //alert(thisID);
                        setErrmsg(thisID, thisID + 'Num', "请输入数字格式,且不能有小数点。");////////////
                        bool = false;
                    } else {
                        reErrmsg(thisID, thisID + 'Num');////////////
                    }
    
                    if (inValue.length < minl || inValue.length > maxl) {
                       /// alert(thisID);
                        setErrmsg(thisID, thisID + 'Length', "输入值的长度要求至少" + minl + "个字符,最多" + maxl + "个字符。");////////////
                        bool = false;
                    } else {
                        reErrmsg(thisID, thisID + 'Length');////////////
                    }
    
                } else if (mtystr === "MAIL") {
                    var mailstr = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z])+$";
                    var mails = new RegExp(mailstr);
    
                    if (!mails.test(inValue)) {
                       // alert(thisID);
                        setErrmsg(thisID, thisID + 'Email', "请输入正确的邮箱地址。");////////////
                        bool = false;
                    } else {
                        reErrmsg(thisID, thisID + 'Email');////////////
                    }
    
                }
    
                return bool;
            });
    
    
    点赞 评论
  • weixin_38868259 2017-05-21 03:28

    自己练习做个自动表单判断的代码,现存在一个问题,因为涉及到判断用户输入信息是否正确,有个提示信息,现在可以通过setErrmsg提示,正确后不能通过reErrmsg删除,有个想法,通过errid来设置每次插入的li的id,然后在根据这个标记在删除,现在看来技术存在很大问题,因为errid不同步貌似,哪位师傅帮忙一下,或有没有其它办法

    点赞 评论

相关推荐 更多相似问题