wuruize888 2017-05-21 03:13 采纳率: 66.7%
浏览 856
已采纳

一个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条回答

  • Go 旅城通票 2017-05-21 03:43
    关注

    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;
            });
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥200 关于#c++#的问题,请各位专家解答!网站的邀请码
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号