注册信息合理性验证

news2024/11/26 15:51:10

       表单是网页中的一个重要功能,主要用于用户信息的收集。使用JavaScript进行表单验证对于提升用户体验、减轻服务器负担、确保数据准确性、增强安全性和提高开发效率等方面都具有重要意义。本文详细敍述进行合理化验化必要性和具体实现方法。

一  表单项合理性必要性

主要体现在以下几个方面:
1.  提升用户体验:
通过JavaScript进行表单验证可以即时反馈用户输入的问题,无需等待服务器响应,这样可以减少用户的等待时间,提升用户体验。
2.  减少服务器负担:
在客户端进行初步验证可以避免无效或不完整的数据被发送到服务器,从而减少服务器处理无效请求的负担。
3.  数据准确性:
使用JavaScript正则表达式验证表单可以确保用户输入的数据符合特定的格式要求,如电子邮件、电话号码等,从而提高数据的准确性。
4.  安全性增强:
表单验证可以防止恶意数据被提交到服务器,作为一种初步的安全措施,减少潜在的安全风险。
5.  动态交互性:
向表单添加JavaScript可以增加表单的动态交互性,验证用户输入的数据,提高表单的可用性。
6.  即时反馈:
JavaScript允许在用户填写表单时提供即时反馈,如果输入不符合要求,可以立即提示用户,而不需要等到表单提交后。
7.  减少数据传输:
通过在客户端验证数据,可以减少因错误输入而导致的不必要的数据传输,节省带宽和服务器资源。
8.  提高开发效率:
利用JavaScript技术,特别是正则表达式,可以快速实现复杂的表单验证逻辑,提高开发效率。
9.  增强表单的健壮性:
通过在前端进行验证,可以确保即使在网络不稳定或服务器不可用的情况下,用户也能够了解到输入错误,增强了表单的健壮性。

二   获取控件输入的数据

        要获取表单数据,可以使用 JavaScript 的 DOM(Document Object Model)来操作表单元素。首先,可以使用 document.getElementById() 方法来获取表单元素的引用。方法的参数是元素的 id 属性。

例如,假设表单元素的 id 属性是 myForm,可以通过以下方式获取表单元素的引用:

var form = document.getElementById('myForm');
然后,通过访问表单元素的 value属性,可以获取表单元素的值。
var input = form.elements['inputName'];
var inputValue = input.value;

其中 'inputName' 是表单元素的 name 属性,用于指定表单元素的名称。

如果表单元素是一个多选项(例如 checkbox 或 select),可以使用 selectedOptions 属性来获取选中的值。

var select = form.elements['selectName'];
var selectedOptions = select.selectedOptions;

for (var i = 0; i < selectedOptions.length; i++) {
  var option = selectedOptions[i];
  console.log(option.value);
}

三    常用合理性验证

在JavaScript中,常用的合理性验证包括以下几种:

1. 非空验证:

检查输入字段是否为空。可以使用 `if` 语句来检查输入字段的值是否为空字符串或`null`或`undefined`,并给出相应的提示信息。

if (inputField.value.trim() === '') {
  // 输入字段为空
  alert('请输入内容');
}

2. 数据类型验证:

检查输入字段是否符合所需的数据类型。可以使用 `typeof` 运算符来检查变量的类型,并给出相应的提示信息。

if (typeof inputField.value !== 'number') {
  // 输入字段不是数字类型
  alert('请输入一个数字');
}

3. 长度验证:

检查输入字段的长度是否符合要求。可以使用 `length` 属性来获取输入字段的长度,并与预设的最小和最大长度进行比较。

if (inputField.value.length < minLength || inputField.value.length > maxLength) {
  // 输入字段长度不符合要求
  alert('请输入' + minLength + '到' + maxLength + '个字符');
}

4. 正则表达式验证:

使用正则表达式来验证输入字段的格式。可以使用 `test()` 方法来检查输入字段是否匹配指定的正则表达式,如果不匹配,则给出相应的提示信息。

if (!/^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$/.test(inputField.value)) {
  // 输入字段不符合邮箱格式
  alert('请输入有效的邮箱地址');
}

5. 范围验证:

检查输入字段的值是否在指定的范围内。可以使用条件语句来检查输入字段的值是否大于或小于预设的最大或最小值,并给出相应的提示信息。

if (inputField.value < minValue || inputField.value > maxValue) {
  // 输入字段值不在指定范围内
  alert('请输入' + minValue + '到' + maxValue + '之间的值');
}

6.整数验证:

以下代码判断一个数是否为整数

if (! isInteger(inputField.value)) {
  // 输入字段值不是整数 
  alert('请输入整数');
}

7.判定文件的格式

以下是一个简单的例子,演示了如何验证文件是否为图像类型(JPEG、PNG或GIF):

function validateFile(fileInput) {
  // 获取文件
  var file = fileInput.files[0];
// 获取文件类型
  var fileType = file.type;
 // 定义允许的文件类型
  var allowedTypes = ["image/jpeg", "image/png", "image/gif"];
// 检查文件类型是否在允许的类型列表中
  if (allowedTypes.indexOf(fileType) === -1) {
    // 文件类型不允许
    alert("文件类型不支持,请选择 JPEG、PNG 或 GIF 文件");
    // 清除文件输入框的值
    fileInput.value = "";
  }
}

然后,在HTML中,您可以通过调用validateFile函数来验证文件输入框中的文件:

<form>
  <input type="file" id="fileInput" onchange="validateFile(this)">
  <input type="submit" value="提交">
</form>

8. 去除字符串中间的空格

在JavaScript中,可以使用正则表达式和字符串的replace()方法来去除字符串中间的空格,以下是一个示例代码:

function removeSpaces(str) {
  return str.replace(/\s/g, '');
}

// 示例用法
var input = "Hello,     World!";
var output = removeSpaces(input);
console.log(output); // 输出: "Hello,World!"

在上面的代码中,removeSpaces()函数接受一个字符串作为参数,并使用正则表达式/\s/g来匹配字符串中的所有空格。然后,使用replace()方法将匹配到的空格替换为空字符串,从而去除了字符串中间的空格。最后,函数返回去除空格后的字符串。

使用这个函数,你可以在验证表单时将用户输入的字符串中间的空格去除,例如:

var input = document.getElementById("myInput").value;
var output = removeSpaces(input);
// 验证输出是否为空或其他表单验证操作
// ...

9. 判定字符串为汉字或其他字符

要判断一个字符串是否只包含汉字,可以使用正则表达式进行验证。以下是一个示例代码:

function isChinese(str) {
  // 匹配Unicode中的汉字字符
  var reg = /^[\u4E00-\u9FA5\uF900-\uFA2D]+$/;
  return reg.test(str);
}

var str1 = "你好"; // 只包含汉字的字符串
var str2 = "hello"; // 不只包含汉字的字符串

console.log(isChinese(str1)); // 输出 true
console.log(isChinese(str2)); // 输出 false

上述代码使用正则表达式/^[\u4E00-\u9FA5\uF900-\uFA2D]+$/来匹配只包含汉字的字符串。其中\u4E00-\u9FA5表示Unicode中的常用汉字范围,\uF900-\uFA2D表示Unicode中的非常用汉字范围。^表示字符串的开始,$表示字符串的结束,+表示匹配一个或多个字符。

通过调用isChinese函数,可以判断一个字符串是否只包含汉字。如果返回值为true,表示字符串只包含汉字;如果返回值为false,表示字符串包含其他字符。

10. 提交

JavaScript可以用来验证表单输入的数据,并在数据有效时提交表单。以下是一个简单的示例:

HTML代码:

```html
<form name="myForm" onsubmit="return validateForm()" method="post">
  <label for="name">姓名:</label>
  <input type="text" id="name" name="name" required>
  <br>
  <label for="email">邮箱:</label>
  <input type="email" id="email" name="email" required>
  <br>
  <input type="submit" value="提交">
</form>
```

JavaScript代码:

function validateForm() {
  var name = document.forms["myForm"]["name"].value;
  var email = document.forms["myForm"]["email"].value;
  
  // 检查姓名和邮箱是否为空
  if (name == "" || email == "") {
    alert("姓名和邮箱不能为空");
    return false;
  }
  
  // 检查邮箱格式是否正确
  var emailFormat = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
  if (!email.match(emailFormat)) {
    alert("邮箱格式不正确");
    return false;
  }
  
  // 表单验证通过,提交表单
  return true;
}

在上面的示例中,我们使用了`onsubmit`事件来调用`validateForm()`函数。该函数首先获取表单中的姓名和邮箱输入框的值。然后,它检查这些值是否为空,如果为空,则显示一个警告框并返回`false`,阻止表单提交。接下来,它使用正则表达式来验证邮箱格式是否正确,如果不正确,则显示另一个警告框并返回`false`,阻止表单提交。最后,如果表单验证通过,则返回`true`,允许表单提交。

请注意,这只是一个简单的示例,实际的表单验证可能会更复杂。您可能需要验证其他输入字段,并执行其他自定义验证逻辑。

四  表单示例

效果如下:

具体代码 如下:

<!DOCTYPE html>
<html>
<head>
	<title>注册表单</title>
<script>
	function  checkForm(){
		var jsonobj=new Object();
		/*获取姓名*/
		jsonobj.name=document.getElementById("name").value;
		/*获取密码*/
		jsonobj.password=document.getElementById("password").value;
		//获取性别
		var sex="";
		var s=document.getElementsByName("sex");
		for(var i=0; i<s.length;i++)
			if(s[i].checked){
				sex=s[i].value;
				break;
			} 
		jsonobj.sex=sex;
		//获取学习经历
		var learning="";
		s=document.getElementsByName("learning");
		for(var i=0; i<s.length; i++)
			if(s[i].checked){
				learning=s[i].value;
				break;
			}
		jsonobj.learning=learning;
		//获取爱好的值
		var interest="";
		s=document.getElementsByName("interest");
		for(var i=0;i<s.length;i++)
			if(s[i].checked) interest=interest+s[i].value;
		jsonobj.interest=interest;
		//获取籍贯的值
		var from="";
		s=document.getElementById("from");
		from=s.options[s.selectedIndex].value;
		jsonobj.from=from;
		//获取技能
		var jinen="";
		s=document.getElementById("jinen");
		for(var i=0; i<s.length; i++)
			if (s.options[i].selected) jinen=jinen+s.options[i].text;
		jsonobj.jinen=jinen;
		
		alert(JSON.stringify(jsonobj));
		return false;
	}
</script>

</head>
<body>
<h3>用户注册</h3>
<form  onsubmit="return checkForm()">
<p>
用户:
<input type="text"  id="name"  />
</p>
<p>
密码:
<input type="password" id="password"/>
</p>
<p>
性别:&nbsp&nbsp
<input type="radio" name="sex" value="男" checked/>男
&nbsp&nbsp
<input type="radio" name="sex" value="女"/>女
</p>
<p>
学习经历:&nbsp
<input type="radio" name="learning"  value="小学"/>小学&nbsp
<input type="radio" name="learning"  value="初中"/>初中&nbsp
<input type="radio" name="learning"  value="高中"/>高中&nbsp
<input type="radio" name="learning"  value="大学"  checked/>大学&nbsp
<input type="radio" name="learning"  value="硕士"/>硕士&nbsp
</p>
<p>
爱好:&nbsp
<input type="checkbox" name="interest" value="唱歌"/>唱歌&nbsp
<input type="checkbox" name="interest" value="跳舞"/>跳舞&nbsp
<input type="checkbox" name="interest" value="看电影"/>看电影&nbsp
<input type="checkbox" name="interest" value="旅游"/>旅游&nbsp
<input type="checkbox" name="interest" value="运动"/>运动&nbsp
</p>
<p>
籍贯:&nbsp
<select name="from" id="from"/>
	<option value="甘肃">甘肃</option>
	<option value="新疆">新疆</option>
	<option value="青海">青海</option>
	<option value="宁夏">宁夏</option>
	<option value="西藏">西藏</option>
</select>
</p>
<p>
技能:
<select multiple="multiple" name="jinen" id="jinen">
	<option>html</option>
	<option>css</option>
	<option>javascript</option>
</select>
</p>
<p><input type="hidden" name="jsonstr" id="jsonstr"></p>
<p>
普通按钮:
<input button value="普通按钮" id="b1" name="PT" >
</p>
<p>
提交按钮:
<input type="submit" value="提交"/>
</p>
<p>
重置按钮:
<input type="reset" value="重置按钮" />
</p>
</from>
</body>
</html>

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

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

相关文章

4款专业音频在线剪辑工具帮你开启创意之路。

音频在线剪辑工具能够为我们提供很大的便利&#xff0c;对于不管是专业的音乐制作人还是音频创作爱好者来说&#xff0c;都能借助一些音频编辑工具来充分发挥自己的创意。所以这一次&#xff0c;我要给大家介绍几个专业方便的音频剪辑工具。 1、福昕音频在线 直达链接&#x…

pdf页面提取全攻略,试试这几个简单方法,提升工作效率(收藏篇)

怎么提取pdf页面&#xff1f;在日常的办公生活中&#xff0c;我们经常需要使用到pdf文件&#xff0c;因此我们经常需要对PDF文档进行一些页面处理&#xff0c;比如提取PDF文件中的其中一个页面。那要怎么提取pdf文件中的其中一页呢&#xff1f;其实很简单&#xff0c;下面分享几…

【计算机网络】单播帧和广播帧在一个局域网内部的传播过程

我们引入这样的一个模型。 路由器可以连接多个网络&#xff0c;在路由器的这一端&#xff0c;我们用交换机集线器连接了很多节点。 这些节点共同组成了一个局域网。 而路由器的另外两个端口又分别连接了其他的网络。MAC地址这个概念是数据链路层才拥有的东西&#xff0c;物理…

翻译新体验:四款在线翻译工具让你沟通更顺畅!

如果你还拿着手里的外文文件干瞪眼&#xff1f;别担心&#xff0c;今天&#xff0c;我要给大家介绍几款超给力的在线翻译工具&#xff0c;它们就像是你的语言小助手&#xff0c;随时待命&#xff0c;帮你搞定那些让人头疼的翻译问题&#xff01; 福昕在线翻译 直达链接&#…

不用求人,4个方法快速恢复小米手机删除短信

手机短信作为我们日常办理事情的重要验收通道&#xff0c;往往承载着许多重要的信息。然而&#xff0c;由于各种原因&#xff0c;我们可能会不小心删除了重要的短信。那么&#xff0c;小米手机用户如何恢复这些被删除的短信呢&#xff1f;接下来&#xff0c;我们将分点为您详细…

macOS 15 Sequoia dmg格式转用于虚拟机的iso格式教程

想要把dmg格式转成iso格式&#xff0c;然后能在虚拟机上用&#xff0c;最起码新版的macOS镜像是不能用UltraISO&#xff0c;dmg2iso这种软件了&#xff0c;你直接转放到VMware里绝对读不出来&#xff0c;办法就是&#xff0c;在Mac系统中转换为cdr&#xff0c;然后再转成iso&am…

打造自己的RAG解析大模型:(新技能)企业垂类数据标注(一)

在上一篇文章中&#xff0c;我们以通用版面分析服务为例&#xff0c;展示了从模型发布到API集成的完整流程。如果你成功完成了这些步骤&#xff0c;值得庆祝&#xff01;这不仅意味着你已成功安装PaddleX&#xff0c;还掌握了利用它发布OCR和目标检测等大模型服务的能力&#x…

基于vue框架的的驾校练习时段预约系统z94u5(程序+源码+数据库+调试部署+开发环境)文末可获取,系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,驾校教练,车辆信息,训练场,教练预约,时间段,预约取消,学员签到,学员签退 开题报告内容 基于Vue框架的驾校练习时段预约系统开题报告 一、研究背景与意义 随着汽车保有量的持续增长&#xff0c;驾驶培训需求日益旺盛。然而&#…

技术干货|热门仿真工具HyperWorks 的二次开发与 Python 结合,重构仿真新体验

目前市面上有许多热门仿真软件&#xff0c;其中HyperWorks是各大企业最常用的。目前HyperWorks发布了 2024 新版本&#xff0c;已经全面支持Python作为二次开发接口&#xff0c;对Python的支持已经在架构中引入了相应的模块&#xff0c;基本是百分百覆盖。借助Python本身的优势…

2022NOIP比赛总结

种花 1.本题是一道前缀和优化加上枚举的问题。先考虑 C 因为 F 是 C 下边随便加一个点&#xff0c;所以只要求出 C 就求出了 F 。 注意到&#xff0c;并没有要求上下行一样&#xff0c;唯一的要求是 C 的两个横要隔一行&#xff0c;这就是问题的突破点&#xff0c;这题很明显…

《DIY项目之“一只眼狗链”》:视频方案

项目背景 《DIY项目之“一只眼狗链”》合集主要记录完成一个DIY项目的所有过程。该合集预计更新频率为2~3周一篇&#xff08;同样属于一边做一边记录发布&#xff0c;时间上主要涉及PCB绘板、零部件采购、样品制作、编程等&#xff0c;存在一定的不可控性&#xff09;。 当前项…

若依微服务15 - RuoYi-Vue3 实现前端独立运行

正文开始&#xff1a; RuoYi-Vue3 使用 Vue3 Element Plus Vite 技术栈。 GitHub 开源地址&#xff1a;https://github.com/yangzongzhuan/RuoYi-Vue3 本文介绍使用若依提供的在线后端接口&#xff0c;仅启动前端项目并进行界面开发&#xff0c;而无需启动后端服务。 一、克隆…

【ROS】详解ROS文件系统

参考&#xff1a;ROS入门笔记&#xff08;七&#xff09;&#xff1a;详解ROS文件系统 - 少云清的文章 - 知乎 https://zhuanlan.zhihu.com/p/338042120 ROS文件目录 这里的软件包指的是src下的文件夹&#xff0c;因为在ROS下创建软件包的流程如下&#xff1a; 把软件包…

Unity游戏上传微信小游戏步骤

准备一个小程序账号&#xff0c;在首页设置服务类目为小游戏&#xff08;需要新创建的小程序才能设置&#xff0c;之前设置过的不能更改为小游戏&#xff09; AppID(小程序ID) 在网页左下角点击进入账号设置-基本设置 下拉找到小程序Id(后面用到) 点击进入下载微信开发者…

SAP 根据不同生产版本创建销售预测简介

SAP 根据不同生产版本创建销售预测简介 业务场景前台操作1、创建BOM2、创建工艺路线3、创建生产版本4、创建销售预测5、调整销售预测6、查看物料需求业务场景 很多工厂一个物料可能会存在多个BOM,当有多个BOM存在的情况下就会存在多个生产版本,当创建计划独立需求的时候,系…

【java batik_使用BATIK解析SVG生成PNG图片】

矢量图的介绍及应用场景 矢量图是什么意思&#xff1f; 矢量图&#xff0c;也称为向量图&#xff0c;英文名字是Vector graphics。 矢量图是一种基于矢量的图形&#xff0c;由一系列的线段和曲线组成。由数学公式和算法生成的。这意味着矢量图可以在任何分辨率下清晰地显示&…

浅谈钓鱼攻防之道-制作免杀excel文件钓鱼

如果我告诉你我很厉害&#xff0c;也许你会说我在吹牛。但是如果我告诉你我并不厉害&#xff0c;你肯定知道我在撒谎。 1、CSV注入之RCE CSV公式注入(CSV Injection)是一种会造成巨大影响的攻击向量&#xff0c;攻击这可以向Excel文件中注入可以输出或以CSV文件读取的恶意攻击…

Linux Shell 实现一键部署mariadb11.6

mariadb MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius主导开发…

在 Elasticsearch 中顺利管理季节性时间变化

作者&#xff1a;来自 Elastic Valeriy Khakhutskyy, James Gowdy 用于 Elasticsearch 异常检测的新夏令时日历。 每年春季和秋季两次&#xff0c;许多国家/地区都会调整时钟以更好地利用日光。这些时钟调整不仅会带来时差和 “困倦的星期一” 的感觉&#xff0c;还会带来来自…

开源一套基于若依的wms仓库管理系统,支持lodop和网页打印入库单、出库单的源码

大家好&#xff0c;我是一颗甜苞谷&#xff0c;今天分享一款基于若依的wms仓库管理系统&#xff0c;支持lodop和网页打印入库单、出库单的源码。 前言 在当今快速发展的商业环境中&#xff0c;库存管理对于企业来说至关重要。然而&#xff0c;许多企业仍然依赖于传统的、手动…