一个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;
        });

u014353911
wuruize888 for(I=多谢,I《)
3 年多之前 回复

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问