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

相关文章

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 浏览器运行迟缓、频繁崩溃或网页加载异常等问题,可以尝试多种方

Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题

《Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题》:本文主要介绍Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录一、前言二、系统架构检测三、卸载旧版 Go四、下载并安装正确版本五、配置环境变量六、验证安装七、常见

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

Maven如何手动安装依赖到本地仓库

《Maven如何手动安装依赖到本地仓库》:本文主要介绍Maven如何手动安装依赖到本地仓库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载依赖二、安装 JAR 文件到本地仓库三、验证安装四、在项目中使用该依赖1、注意事项2、额外提示总结一、下载依赖登

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效