Layui手动验证表单必填项

2023-10-05 20:03

本文主要是介绍Layui手动验证表单必填项,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.JS文件(formVerify.js)

//验证规则设定
var verifyConfig = {required: [/[\S]+/,'必填项不能为空'],phone: [/^1\d{10}$/,'请输入正确的手机号'],email: [/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,'邮箱格式不正确'],url: [/(^#)|(^http(s*):\/\/[^\s]+\.[^\s]+)/,'链接格式不正确'],number: function(value){if(!value || isNaN(value)) return '只能填写数字'},date: [/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/,'日期格式不正确'],identity: [/(^\d{15}$)|(^\d{17}(x|X|\d)$)/,'请输入正确的身份证号']
};
//扩展JQuery
$.fn.formVerify=function(v){var device = layui.device();var stop = null //验证不通过状态,verify = verifyConfig //验证规则,DANGER = 'layui-form-danger' //警示样式,verifyElem = this.find('*[lay-verify]'); //获取需要校验的元素//开始校验layui.each(verifyElem, function(_, item){var othis = $(this),vers = othis.attr('lay-verify').split('|'),verType = othis.attr('lay-verType') //提示方式,value = othis.val();othis.removeClass(DANGER); //移除警示样式//遍历元素绑定的验证规则layui.each(vers, function(_, thisVer){var errorText = '' //错误提示文本,isFn = typeof verify[thisVer] === 'function';//匹配验证规则if(verify[thisVer]){var isTrue = isFn ? errorText = verify[thisVer](value, item) : !verify[thisVer][0].test(value);errorText = errorText || verify[thisVer][1];if(thisVer === 'required'){errorText = othis.attr('lay-reqText') || errorText;}var verifyType=$(item).attr('type');if(verifyType==="radio" || verifyType==="checkbox"){var verifyName=$(item).attr('name'),verifyElem=$(item).parents('.layui-form').find('input[name='+verifyName+']');isTrue= !verifyElem.is(':checked');if(isTrue){var focusElem = verifyElem.next().find('i.layui-icon');//定位焦点focusElem.css(verifyType=='radio'?{"color":"#FF5722"}:{"border-color":"#FF5722"});//对非输入框设置焦点focusElem.first().attr("tabIndex","1").css("outline","0").blur(function() {focusElem.css(verifyType=='radio'?{"color":""}:{"border-color":""});}).focus();if(verType === 'tips'){layer.tips(errorText, function(){return othis.next();}(), {tips: 1});} else if(verType === 'alert'){layer.alert(errorText, {title: '提示', shadeClose: true});} else {layer.msg(errorText, {icon: 5, shift: 6});}return stop = true;}}//如果是必填项或者非空命中校验,则阻止提交,弹出提示if(isTrue){//提示层风格if(verType === 'tips'){layer.tips(errorText, function(){if(typeof othis.attr('lay-ignore') !== 'string'){if(item.tagName.toLowerCase() === 'select' || /^checkbox|radio$/.test(item.type)){return othis.next();}}return othis;}(), {tips: 1});} else if(verType === 'alert') {layer.alert(errorText, {title: '提示', shadeClose: true});} else {layer.msg(errorText, {icon: 5, shift: 6});}//非移动设备自动定位焦点if(!device.android && !device.ios){setTimeout(function(){item.focus();}, 7);}othis.addClass(DANGER);return stop = true;}}});if(stop) return stop;});if(stop){return false;} else {return true;}
};//直接定义JS方法
function formVerify(formId){var $ = layui.$//,layer = layui.layer,device = layui.device();var stop = null //验证不通过状态,verify = verifyConfig //验证规则,DANGER = 'layui-form-danger' //警示样式,verifyElem = $(formId).find('*[lay-verify]'); //获取需要校验的元素//开始校验layui.each(verifyElem, function(_, item){var othis = $(this),vers = othis.attr('lay-verify').split('|'),verType = othis.attr('lay-verType') //提示方式,value = othis.val();othis.removeClass(DANGER); //移除警示样式//遍历元素绑定的验证规则layui.each(vers, function(_, thisVer){var errorText = '' //错误提示文本,isFn = typeof verify[thisVer] === 'function';//匹配验证规则if(verify[thisVer]){var isTrue = isFn ? errorText = verify[thisVer](value, item) : !verify[thisVer][0].test(value);errorText = errorText || verify[thisVer][1];if(thisVer === 'required'){errorText = othis.attr('lay-reqText') || errorText;}var verifyType=$(item).attr('type');if(verifyType==="radio" || verifyType==="checkbox"){var verifyName=$(item).attr('name'),verifyElem=$(item).parents('.layui-form').find('input[name='+verifyName+']');isTrue= !verifyElem.is(':checked');if(isTrue){var focusElem = verifyElem.next().find('i.layui-icon');//定位焦点focusElem.css(verifyType=='radio'?{"color":"#FF5722"}:{"border-color":"#FF5722"});//对非输入框设置焦点focusElem.first().attr("tabIndex","1").css("outline","0").blur(function() {focusElem.css(verifyType=='radio'?{"color":""}:{"border-color":""});}).focus();if(verType === 'tips'){layer.tips(errorText, function(){return othis.next();}(), {tips: 1});} else if(verType === 'alert'){layer.alert(errorText, {title: '提示', shadeClose: true});} else {layer.msg(errorText, {icon: 5, shift: 6});}return stop = true;}}//如果是必填项或者非空命中校验,则阻止提交,弹出提示if(isTrue){//提示层风格if(verType === 'tips'){layer.tips(errorText, function(){if(typeof othis.attr('lay-ignore') !== 'string'){if(item.tagName.toLowerCase() === 'select' || /^checkbox|radio$/.test(item.type)){return othis.next();}}return othis;}(), {tips: 1});} else if(verType === 'alert') {layer.alert(errorText, {title: '提示', shadeClose: true});} else {layer.msg(errorText, {icon: 5, shift: 6});}//非移动设备自动定位焦点if(!device.android && !device.ios){setTimeout(function(){item.focus();}, 7);}othis.addClass(DANGER);return stop = true;}}});if(stop) return stop;});if(stop){return false;} else {return true;}
};

2.调用验证方法

<form id="addUserForm" class="layui-form layui-form-pane"><div class="layui-form-item"><label class="layui-form-label">登录账号</label><div class="layui-input-block"><input type="text" name="userName" class="layui-input" lay-verify="required"></div></div><div class="layui-form-item"><label class="layui-form-label">登录密码</label><div class="layui-input-block"><input type="password" name="passWord" class="layui-input" lay-verify="required|pass"></div></div>
</form><a class="layui-btn" onclick="formSubmit()">提交表单</a><script src="formVerify.js" type="text/javascript"></script>
<script>
//自定义验证规则
layui.$.extend(true, verifyConfig,{pass: [/^[\S]{6,12}$/,'密码必须6到12位,且不能出现空格']}
);function formSubmit(){if($("#addUserForm").formVerify()){alert("表单提交成功");}
}
</script>

 

这篇关于Layui手动验证表单必填项的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/151939

相关文章

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

Java JDK Validation 注解解析与使用方法验证

《JavaJDKValidation注解解析与使用方法验证》JakartaValidation提供了一种声明式、标准化的方式来验证Java对象,与框架无关,可以方便地集成到各种Java应用中,... 目录核心概念1. 主要注解基本约束注解其他常用注解2. 核心接口使用方法1. 基本使用添加依赖 (Maven

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

如何在Mac上彻底删除Edge账户? 手动卸载Edge浏览器并清理残留文件技巧

《如何在Mac上彻底删除Edge账户?手动卸载Edge浏览器并清理残留文件技巧》Mac上的Edge账户里存了不少网站密码和个人信息,结果同事一不小心打开了,简直尴尬到爆炸,想要卸载edge浏览器并清... 如果你遇到 Microsoft Edge 浏览器运行迟缓、频繁崩溃或网页加载异常等问题,可以尝试多种方