文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何用JavaScript实现表单验证

2023-06-30 16:02

关注

这篇“如何用JavaScript实现表单验证”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何用JavaScript实现表单验证”文章吧。

一、JavaScript 表单验证

HTML 表单验证可以通过 JavaScript 来完成。

以下实例代码用于判断表单字段(fname)值是否存在, 如果不存在,就弹出信息,阻止表单提交:

function validateForm() {    var x = document.forms["myForm"]["fname"].value;    if (x == null || x == "") {        alert("需要输入名字。");        return false;    }}

以上 JavaScript 代码可以通过 HTML 代码来调用:

<form name="myForm" action="demo_form.php" onsubmit="return validateForm()" method="post">名字: <input type="text" name="fname"><input type="submit" value="提交"></form>

HTML 表单验证也可以通过浏览器来自动完成。

如果表单字段 (fname) 的值为空, required 属性会阻止表单提交:

<form action="demo_form.php" method="post">  <input type="text" name="fname" required="required">  <input type="submit" value="提交"></form>

Internet Explorer 9 及更早 IE 浏览器不支持表单自动验证。

1、数据验证

数据验证用于确保用户输入的数据是有效的。

典型的数据验证有:

大多数情况下,数据验证用于确保用户正确输入数据。

数据验证可以使用不同方法来定义,并通过多种方式来调用。

1、必填(或必选)项目

下面的函数用来检查用户是否已填写表单中的必填(或必选)项目。假如必填或必选项为空,那么警告框会弹出,并且函数的返回值为 false,否则函数的返回值则为 true(意味着数据没有问题):

function validateForm(){  var x=document.forms["myForm"]["fname"].value;  if (x==null || x=="")  {    alert("姓必须填写");    return false;  }}

以上函数在 form 表单提交时被调用:

<form name="myForm" action="demo-form.php" onsubmit="return validateForm()" method="post">姓: <input type="text" name="fname"><input type="submit" value="提交"></form>

2、E-mail 验证

下面的函数检查输入的数据是否符合电子邮件地址的基本语法。

意思就是说,输入的数据必须包含 @ 符号和点号(.)。同时,@ 不可以是邮件地址的首字符,并且 @ 之后需有至少一个点号:

function validateForm(){  var x=document.forms["myForm"]["email"].value;  var atpos=x.indexOf("@");  var dotpos=x.lastIndexOf(".");  if (atpos<1 || dotpos=x.length){    alert("不是一个有效的 e-mail 地址");    return false;  }}</atpos+2>

下面是连同 HTML 表单的完整代码:

<form name="myForm" action="demo-form.php" onsubmit="return validateForm();" method="post">    Email: <input type="text" name="email">    <input type="submit" value="提交"></form>

2、约束验证

HTML5 新增了 HTML 表单的验证方式:约束验证(constraint validation)。

约束验证是表单被提交时浏览器用来实现验证的一种算法。

HTML 约束验证基于:

1、约束验证 HTML 输入属性

完整列表,请查看 HTML 输入属性。

2、约束验证 CSS 伪类选择器

完整列表,请查看 CSS 伪类。

二、JavaScript 验证 API

约束验证 DOM 方法

checkValidity():如果 input 元素中的数据是合法的返回 true,否则返回 false。

1、checkValidity() 方法

<input id="id1" type="number" min="100" max="300" required><button onclick="myFunction()">验证</button> <p id="demo"></p> <script>function myFunction() {    var inpObj = document.getElementById("id1");    if (inpObj.checkValidity() == false) {        document.getElementById("demo").innerHTML = inpObj.validationMessage;    }}</script>

约束验证 DOM 属性

Validity 属性

input 元素的 validity 属性包含一系列关于 validity 数据属性:

如果输入的值大于 100,显示一个信息:

<input id="id1" type="number" max="100"><button onclick="myFunction()">验证</button> <p id="demo"></p> <script>function myFunction() {    var txt = "";    if (document.getElementById("id1").validity.rangeOverflow) {       txt = "输入的值太大了";    }    document.getElementById("demo").innerHTML = txt;}</script>

2、setCustomValidity

setCustomValidity():设置 input 元素的 validationMessage 属性,用于自定义错误提示信息的方法。

使用 setCustomValidity 设置了自定义提示后,validity.customError 就会变成true,则 checkValidity 总是会返回false。如果要重新判断需要取消自定义提示,方式如下:

setCustomValidity('') setCustomValidity(null) setCustomValidity(undefined)

以下实例如果输入信息不合法,则返回错误信息:

var inpObj = document.getElementById("id1");inpObj.setCustomValidity(''); // 取消自定义提示的方式if (inpObj.checkValidity() == false) {    if(inpObj.value==""){        inpObj.setCustomValidity("不能为空!");    }else if(inpObj.value<100 || inpObj.value>300){        inpObj.setCustomValidity("请重新输入数值(100~300之间)!");    }    document.getElementById("demo").innerHTML = inpObj.validationMessage;} else {    document.getElementById("demo").innerHTML = "输入正确";}

三、表单文本框自动验证

(function(){       if(window.addEventListener) window.addEventListener("load",init,false);       else if(window.attachEvent) window.attachEvent("onload",init);              function init(){       for(var i=0;i)       {           var f=document.forms[i];//第i个form           var needValidation = false;// Assume ,for now,that this form does not need any validation                       for(var j=0;j)           {               e = f.elements[j];                               if(e.type!="text") continue;               var pattern = e.getAttribute("pattern");               var required = e.getAttribute("required")!=null;               //See if it has attribute that require validation               if(required&&!pattern){               pattern = "<a href="https://www.cnblogs.com/springsnow/p/$s" rel="external nofollow"   target="_blank">\\s</a>";                e.setAttribute("pattern",pattern);               }                if(e.pattern){               e.onchange = validateOnChange;                               needsValidation = true;               }          }       if(needValidation) f.onsubmit = validateOnSubmit;        }        }      function validateOnChange()        {   var textfield = this;            var pattern = textfield.getAttribute("pattern");            var value = textfield.value;                         if(value.search(pattern)==-1) textfield.classname = "invalid";            else textfield.classname = "valid";        }      function validateOnSubmit()        {            var invalid = false;            for(var i=0;i<this.elements.length;i++)               {                  var e = this.elements[i];                  if(e.type =="text" && e.onchange == validateOnChange){                    e.onchange();                    if(e.classname == "invalid") invalid = true;                   }                }            if(invalid){             alert("The form is incompletely or incorrectly filled out.\n "+"Please correct the highlighted field and try again");             return false;            }        }})();</f.elements.length;j++</document.forms.length;i++

调用:

<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Untitled Document</title><style >    input.invalid { background-color:#fa0;}</style></head> <body><form action="test.asp">Name:<input type="text" name="name" required  /><br />email:<input type="text" name="email" pattern="^\s*\w+@\w+\.\w+\s*$" /><br />zipcode:<input type="text" name="zip" pattern = "^\s*\d{5}\s*$" />unvalidated:<input type="text" onchange='alert("test")' /><br /><input type="submit" /></form>

以上就是关于“如何用JavaScript实现表单验证”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯