js验证邮箱

本文代码来自W3school,部分有删改害羞

<html>
    <head>
    	<meta charset="utf-8" />
        <script>
	    function checkEmail(field,alerttxt)
         {
            with (field)
            {
              apos=value.indexOf("@")
              dotpos=value.lastIndexOf(".")
              if (apos<1||dotpos-apos<2) 
                {   alert(alerttxt);
                	return false
                }
              else {return true}
            }
        }
           function checkForm(thisform)
        {
            with (thisform)
            {
              if (checkEmail(email,"这不是一个正确的邮箱!")==false)
                {   email.focus(); //focus() 方法用于给予该元素焦点。这样用户不必点击它,就能编辑显示的文本了。
                	return false
                }
            }
        }
        </script>
    </head>

    <body>
        <form action="success.html"οnsubmit="return checkForm(this);" method="get">
                邮箱: <input type="text" name="email" size="30">
        <input type="submit" value="提交"> 
        </form>
    </body>

</html>

该程序用于验证邮箱格式是否正确,当然标准不是很严谨,在一本书上看到用正则表达式更加精确,这个之后在研究一下。。

大体标准就是输入的数据必须包含‘@’符号和点号‘.’,同时,@ 不可以是邮件地址的首字符,并且 @ 之后需有至少一个点号。

从头开始说吧:

js中声明了两个函数checkForm()和checkEmail(),这次表单里只有一个邮箱需验证,还阔以添加账户密码等……首先是with(),它为一个语句或一组语句指定默认对象,with语句通常用来缩短特定情形下必须写的代码量,比如本例中的checkEmail()函数, field这个形参传参数的时候实参是form.email,所以可以省略field.value,也就是form.email.value,也就是说field是该段代码中用到的对象,这样便可以避免代码重复。
为了方便介绍这段代码,引入百度(部分删改):

提交表单时,执行checkForm方法,并把表单对象作为参数传入方法中,在checkForm方法中,先判断checkEmail方法,由于该方法是公共的,所以可以直接找到,而作为参数的对象email在当前作用域中不存在,所以需要到thisform这个表单对象的作用域中查找name属性是email的表单元素,找到后,执行checkEmail方法,在checkEmail方法中需要查找value对象,而在checkEmail方法的作用域中找不到value属性,因此需要到field中查找(field这时就是name等于email表单元素),field中存在value属性,如果该属性的值为空,给出提示信息并返回false,否则返回true,如果checkEmail方法返回true,表单成功提交,如果返回false,email获得焦点并且表单不提交。
然后是value调用的两个方法,indexof(string)返回字符串string在父串中首次出现的位置,注意是从0开始,没有返回-1;lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索;然后可以验证邮箱的格式是否基本正确。
οnsubmit="return checkForm(this)",这是一个验证表单的功能。当checkForm()这个函数返回值是true的时候,表单提交,反之则不提交。

onsubmit 事件会在表单中的确认按钮被点击时发生,这里return的作用就是对checkForm函数运行返回的结果,再向上返回,以便能在发现错误时即使停止后面继续将错误的数据拿去运行。注意,如果不加return的话,即οnsubmit="checkFor(this)",这样也只能算是把false或者true字符串赋值给onSubmit,并不具有一定的功能,即不论表单中是否出现错误,都会继续运行下去。
最后便是method="get",原文中是用的"post",不过运行之后显示内部服务器错误,一查资料得知"post"属性需要服务器去处理post请求,而使用”get“属性的话,Hbulider里面有一个内置的服务器便可以处理这个。而对于get与post的区别大家可以去知乎上看一下,感觉讲的不错……
效果如下:输入正确格式

或者不是那么正规,但可以满足本次需求:

结果都可以注册成功:

格式不正确时会有提醒:

大概就是这样,success.html就是个显示页,可以随意写:
<html>
	<head>
		<meta charset=utf-8 />
	</head> 
	<body>
		<center>
			<font color="black" size="7">恭喜你注册成功!</font>
		</center>
	</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beyond_LH

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值