javascript 封装表单函数,验证规则,然后提交

<html><head><meta http-equiv="Content-Type;charset=utf-8"/><title>函数柯里化</title><style type="text/css"> #user,#pwd {color:red;font-size: 14px;}</style></head><body><!--verify="username|required“为你要添加的规则--><form id="form1" method="post" action=""><input type="text" name="user" value="" verify="username|required" size=20/><span id="user"></span><br/><input type="password" name="pwd" value="" verify="password|required" size=20/><span id="pwd"></span><br/><input type="button" name="btn" value="提交"/></form><script type="text/javascript">function form(arr){//表示每个input的合法性var status=[];//预存表单项目规则var verifylist={digit:function(val){return{msg:'非合法数字',reg:/\d+/}},email:function(val){return{msg:'非合法数字',reg:/\d+/}},phone:function(val){return {msg:'非合法电话',reg:/^1(3|4|5|6|7|8|9)\d{9$}/}},required:function(val){return {msg:'不为能空',reg:/\S/}}};//存储传入的资源规则this.verify=arr;//获取第1个表单var form=document.forms[0];//把资源规则存入面有私有规则对象当中,无则加入,有则替代,也叫初始化规则this.addVerify=function(){this.verify.forEach(function(item,index,array){verifylist[item.name]=item.verify;});}//获取私有规则对象的特权函数this.getverify=function(){return verifylist}//初始化表单元素,为每个input绑定失去焦点事件this.init=function(){this.addVerify();var that=this;for(const key of form.elements){if(key.name!="btn"){key.onblur=function(event){that.validation(key);};//初始化每个input的状态status[key]=false;}}};//验证表单每个值,错误信息跟随在input框后面this.validation=function(key){var value=key.value;//获取input框的verify规则var rule=key.getAttribute('verify');var rs=rule.split('|');var that=this;rs.forEach(function(item,index,array){var x=that.getverify()[item];var reg=RegExp(x().reg);let msgSpan=document.getElementById(key.name);//各规则显示自己的错误信息switch(item){case 'username': if(!reg.test(value)){msgSpan.innerHTML=x().msg;status[key]=false;}else{msgSpan.innerHTML='';status[key]=true;}break;case 'password': if(!reg.test(value)){msgSpan.innerHTML=x().msg;status[key]=false;}else{msgSpan.innerHTML='';status[key]=true;}break;  case  'required': if(!reg.test(value)){msgSpan.innerHTML=x().msg;status[key]=false;}break;}});};//提交按钮事件,status状态为true时表明各input值都通过验证可以提交表单,如果为false时则禁止提交this.submitform=function(){form.elements.btn.onclick=function(){// console.log(Object.values(status)[0]);if(Object.values(status)[0]==true){form.submit();alert('提交成功');}else{alert("表单不正确,提交失败");}};};}//资源规则,在input框后面添加,以|为分隔var ver=[{name:'username',verify:function(val){return {msg:'用户名为4-16位',reg:/^[a-z0-9_-]{4,16}$/}}},{name:'password',verify:function(val){return {msg:'最少6位',reg:/(\S+){6,}$/}}}];var f=new form(ver);f.init();f.submitform();</script></body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/124862.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信创强国 | 安全狗荣获信创工委会技术活动单位证书

近日&#xff0c;安全狗荣获中国电子工业标准化技术协会信息技术应用创新工作委员会&#xff08;以下简称“信创工委会”&#xff09;颁发的信息技术应用创新工作委员会技术活动单位证书。 作为国内云原生安全领导厂商&#xff0c;安全狗在信息技术应用创新方面有多年的技术积累…

如何将普通队列异常消息路由到死信队列

如何将普通队列异常消息路由到死信队列 在RabbitMQ中&#xff0c;我们经常需要处理异常消息&#xff0c;特别是当消息处理失败时。一个常见的用例是将异常消息路由到死信队列&#xff0c;以便稍后重新处理或进一步分析。在本篇博客中&#xff0c;我们将演示如何配置RabbitMQ和…

超全整理,Jmeter性能测试-脚本error报错排查/分布式压测(详全)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 性能脚本error报错…

OPENCV 闭运算实验示例代码morphologyEx()函数

void CrelaxMyFriendDlg::OnBnClickedOk() {hdc this->GetDC()->GetSafeHdc();// TODO: 在此添加控件通知处理程序代码string imAddr "c:/Users/actorsun/Pictures/";string imAddr1 imAddr"rice.png";Mat relax, positive;relax imread(imAddr1…

【Redis】高并发分布式结构服务器

文章目录 服务端高并发分布式结构名词基本概念评价指标1.单机架构缺点 2.应用数据分离架构应用服务集群架构读写分离/主从分离架构引入缓存-冷热分离架构分库分表&#xff08;垂直分库&#xff09;业务拆分⸺微服务 总结 服务端高并发分布式结构 名词基本概念 应⽤&#xff0…

030.Python面向对象_类补充_只读属性

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

python操作mysql

一、python操作mysql简介 关于mysql安装及基本知识可以查看mysql专栏文章 https://blog.csdn.net/qq_34491508/category_11590629.html python中可以使用 mysql-connector 来连接使用 MySQL&#xff0c; mysql-connector 是 MySQL 官方提供的驱动器&#xff0c;也可以使用Py…

MATLAB中perceptron函数用法

目录 语法 说明 示例 使用感知器求解简单分类问题 perceptron函数的功能是简单的单层二类分类器。 语法 perceptron(hardlimitTF,perceptronLF) 说明 注意 Deep Learning Toolbox™ 支持早期形式的感知器。为了获得更好的结果&#xff0c;您应改用 patternnet&#xff0…

【Linux】-进程控制(深度理解写时拷贝、exit函数、return的含义以及makefile编译多个程序)-进程创建、进程终止、进程等待、进程程序替换

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

【华为】路由器以PPPoE拨号接入广域网

组网需求 用户希望以PPPoE拨号方式接入广域网&#xff0c;如图1所示&#xff0c;Router作为PPPoE客户端&#xff0c;得到PPPoE服务器的认证后获得IP地址&#xff0c;实现用户接入互联网的需求。内网网关地址&#xff08;即VLANIF1接口的IP地址&#xff09;为10.137.32.1/24。 …

JVS-BI数字大屏设计器:一站式解决方案

数字大屏介绍 数字大屏是当下数据展示、业务监控、指挥调度常见的业务表达形态&#xff0c;常有可视化的图表、效果装饰、事件操作等技术组成酷炫的效果展示。 配置入口 进入JVS-BI&#xff08;bi.bctools.cn&#xff09;&#xff0c;进入大屏页面&#xff0c;如下图所示 ①…

想翻译pdf文档,试了几个工具对比:有阿里(完全免费,快,好用,质量高,不用注册登录)道最好(有限免费) 百度(有限免费)和谷歌完全免费(网不好)

文档翻释作为基础设施&#xff0c;工作必备。 阿里 &#xff08;完全免费&#xff0c;快&#xff0c;好用&#xff0c;质量高&#xff0c;不用注册登录&#xff0c;无广告&#xff09;我给满分 https://translate.alibaba.com/#core-translation 先选好语言。 Google(完全免…

css position属性与js滚动

“视口”就是浏览器窗口中实际显示文档内容的区域&#xff0c;不包含浏览器的“外框”&#xff0c;如菜单、工具条和标签。文档则是指整个网页。 1 css 的position static 正常定位&#xff0c;是元素position属性的默认值&#xff0c;元素遵循常规流。 relative 相对定位&…

【年终特惠】全流程HEC-RAS 1D/2D水动力与水环境模拟技术案例实践及拓展应用

水动力与水环境模型的数值模拟是实现水资源规划、环境影响分析、防洪规划以及未来气候变化下预测和分析的主要手段。然而&#xff0c;一方面水动力和水环境模型的使用非常复杂&#xff0c;理论繁复&#xff1b;另一方面&#xff0c;免费的水动力和水环境软件往往缺少重要功能&a…

Failed to restart sshd.service: Unit sshd.service not found

Failed to restart sshd.service: Unit sshd.service not found.出现这个问题以及远程链接mobaxterm出现 Network error: Connection refused的解决方案如下 其实出现问题二就是kail2018里面的ssh服务未开启&#xff0c;和问题一是同样的&#xff0c;故汇集写在一篇帖子中&…

【兔子王赠书第4期】用ChatGPT轻松玩转机器学习与深度学习

文章目录 前言机器学习深度学习ChatGPT推荐图书粉丝福利尾声 前言 兔子王免费赠书第4期来啦&#xff0c;突破传统学习束缚&#xff0c;借助ChatGPT的神奇力量&#xff0c;解锁AI无限可能&#xff01; 机器学习 机器学习是人工智能领域的一个重要分支&#xff0c;它的目的是让…

二叉树问题——前/中/后/层遍历(递归与栈)

摘要 博文主要介绍二叉树的前/中/后/层遍历(递归与栈)方法 一、前/中/后/层遍历问题 144. 二叉树的前序遍历 145. 二叉树的后序遍历 94. 二叉树的中序遍历 102. 二叉树的层序遍历 二、二叉树遍历递归解析 // 前序遍历递归LC144_二叉树的前序遍历 class Solution {publi…

CentOS安装Ruby环境

安装依赖项 sudo yum install -y perl zlib-devel openssl-devel安装git sudo yum install -y git git config --global http.sslVerify falsecurl取消ssl认证 echo "insecure" >> ~/.curlrc安装rbenv https://github.com/rbenv/rbenv git clone https://…

2023年CCF中国开源大会“大模型时代的智能化软件工程新范式”分论坛成功举行...

2023年CCF中国开源大会“大模型时代的智能化软件工程新范式”分论坛于10月21日在湖南长沙成功举行。本次论坛聚焦大模型时代的智能化软件新生态以及相应的软件工程新范式&#xff0c;邀请了多位来自学术界和工业界的专家进行分享和交流&#xff0c;共设置了5个主题报告和1个Pan…

Spring6 学习 分享

Spring6 1、概述 1.1、Spring是什么&#xff1f; Spring 是一款主流的 Java EE 轻量级开源框架 &#xff0c;Spring 由“Spring 之父”Rod Johnson 提出并创立&#xff0c;其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简…