Fork me on github

jquery validate校验

1.引入validate

 <script src="~/Content/js/validateform/jquery.validate.min.js"></script>
    <script src="~/Content/js/validateform/messages_zh.js"></script>

2.提交前校验

function dangAnInfoFormSubmit() {
        if (validateForm1().form()) {
            editClickFun();
        }
    }

 

function validateForm1() {
        $.validator.addMethod("checkPhone", function (value, element, params) {
            return this.optional(element) || ((/0?(13|14|15|17|18|19)[0-9]{9}/).test(value));
        }, "请输入手机号码");
        $.validator.addMethod("checkusergrouplist", function (value, element, params) {
            return this.optional(element) || ((/[1-9]\d*/).test(value))
        }, "请选择住户组");
        $.validator.addMethod("checkDate", function (value, element, params) {
            return this.optional(element) || ((/\d{4}(\-|\/|.)\d{1,2}\1\d{1,2}/).test(value));
        }, "请输入日期格式");
        $.validator.addMethod("checkInt", function (value, element, params) {
            return this.optional(element) || ((/[1-9]\d*/).test(value));
        }, "请输入大于0的整数");
        $.validator.addMethod("checkSfz", function (value, element, params) {
            return this.optional(element) || ((/\d{17}[\d|x]|\d{15}/).test(value));
        }, "请输入身份证号");
        $.validator.addMethod("checkDesname", function (value, element, params) {
            return this.optional(element) || ((/^[\s\S]*.*[^\s][\s\S]*$/).test(value)); //非空/^[\s\S]*.*[^\s][\s\S]*$/
        }, "请输入名称");
        $.validator.addMethod("checkDesTime", function (value, element, params) {
            return this.optional(element) || ((/^[\s\S]*.*[^\s][\s\S]*$/).test(value)); //非空/^[\s\S]*.*[^\s][\s\S]*$/
        }, "请输入时间");
        $.validator.addMethod("checkDesHos", function (value, element, params) {
            return this.optional(element) || ((/^[\s\S]*.*[^\s][\s\S]*$/).test(value)); //非空/^[\s\S]*.*[^\s][\s\S]*$/
        }, "请输入医院");
        var rulesValue = {
            InputName: { required: true },
            sltsex: { required: true },
            inputiphone: { required: true, checkPhone: true },
            sfTypeInfos: { required: true },
            csTypeInfos: { required: true },
            selfloorInfos: { required: true },
            selroomInfos: { required: true },
            //inputaddress: { required: true },
            selTblSysDepts: { required: true },
            selhealthWorker: { required: true },
            inputbirthOfDate: { required: true, checkDate: true },
            sltdev: { required: true },
            usergrouplist: { required: true, checkusergrouplist: true },
            //输入校验sfz
            inputnationId: { required: true, checkSfz: true },
            familyPhone: { checkPhone: true },

        }
        var idList = ['isDisabledList', 'drugallergyList', 'familyhistoryList', 'olddiseasesList', 'inactivationtypeList', 'isBloodTransfusionList', 'isTraumaList', 'isSurgeryList']
        for (let j = 0; j < idList.length; j++) {
            let docid = document.getElementById(idList[j])
            if (docid.rows.length > 1) {
                for (let i = 1; i <= docid.rows.length; i++) {
                    rulesValue[idList[j] + '_desName_' + i] = { required: true, checkDesname: true }
                    rulesValue[idList[j] + '_desTime_' + i] = { required: true, checkDesTime: true }
                    rulesValue[idList[j] + '_desHos_' + i] = { required: true, checkDesHos: true }
                }
            }
        }
        var messagesValue = {
            InputName: { required: "请输入姓名" },
            sltsex: { required: "请选择性别" },
            inputiphone: { required: "请输入手机号码" },
            sfTypeInfos: { required: "请输入省份" },
            csTypeInfos: { required: "请输入城市" },
            selfloorInfos: { required: "请输入楼层" },
            selroomInfos: { required: "请输入房间" },
            //inputaddress: { required: "请输入住址" },
            selTblSysDepts: { required: "请选择护理组" },
            selhealthWorker: { required: "请选择保健员" },
            sltdev: { required: "请选择序列号" },
            usergrouplist: { required: "请选择住户组", },
            inputbirthOfDate: { required: "请输入出生日期" },
            //非必填项进行校验
            inputnationId: { required: "请输入身份证号" },
            InputAge: { required: "请输入年龄" },
        }
        for (let j = 0; j < idList.length; j++) {
            let docid = document.getElementById(idList[j])
            if (docid.rows.length > 1) {
                for (let i = 1; i <= docid.rows.length; i++) {
                    messagesValue[idList[j] + '_desName_' + i] = { required: "请输入名称" }
                    messagesValue[idList[j] + '_desTime_' + i] = { required: "请输入时间" }
                    messagesValue[idList[j] + '_desHos_' + i] = { required: "请输入医院" }
                }
            }
        }

        return $("#dangAnInfoForm").validate({
            rules: rulesValue,
            messages: messagesValue
        });
    }

 validate校验相同name时只校验第一个input的问题

修改源文件.js无效

 //  this.name in c || !b.objectLength(a(this).rules()) ? !1 : (c[this.name] = !0, !0)
                        (c[this.name] = !0, !0)

 

解决办法1:设置成不同name,分别校验

解决办法2:手写校验(样式形如validate)

<div class='form-group'>
                        <label for='stream_url'><i class='bitianxiang'>*</i>接入地址</label>
                        <input type='text' class='form-control' name='stream_url' placeholder='请输入接入地址'>
                        <label  class='error' style='display:none' >请输入rtsp://开头的接入地址</label>
                    </div>

 

 @*提交之前校验*@
        function btnSaveFall() {
            @*点击提交之前开始校验*@
            $("input[name='stream_url']").attr("oninput", "streamChange();");
            $("input[name='remark']").attr("oninput", "remarkChange();");
            var result1 = validate2Form()
            var result2 = validateForm().form()
            if (result1 && result2)
                editClickFun()
        }

 

 function streamChange() {
            let flag = false;
            $("input[name='stream_url']").each(function (index, item) {
                if (!$(this).is(':hidden') && !$(this).val()) { //true 隐藏
                    $(this).next()[0].innerHTML = '请输入rtsp://开头的接入地址'
                    $(this).next().show()
                    flag = false
                } else {
                    if (!$(this).is(':hidden') && !((/^rtsp:*/).test($(this).val()))) {
                        $(this).next()[0].innerHTML = '请输入rtsp://开头的接入地址'
                        $(this).next().show()
                        flag = false
                    } else {
                        $(this).next().hide()
                         flag = true
                    }
                }
            });
            if(flag) return true
            return false
        }

 

posted @ 2023-06-05 10:31  我の前端日记  阅读(105)  评论(0编辑  收藏  举报
Copyright © 2021 LinCangHai
Powered by .NET 5.0 on Kubernetes