<html>
<head>
<script type="text/javascript">
function validate_email(field, alerttxt) {
with(field) {
apos = value.indexOf("@")
dotpos = value.lastIndexOf(".")
if(apos < 1 || dotpos - apos < 2) {
alert(alerttxt);
return false
} else {
return true
}
}
}
function validate_form(thisform) {
with(thisform) {
if(validate_email(email, "Not a valid e-mail address!") == false) {
email.focus();
return false
}
}
}
</script>
</head>
<body>
<form action="submitpage.htm"onsubmit="return validate_form(this);" method="post">
Email: <input type="text" name="email" size="30">
<input type="submit" value="Submit">
</form>
</body>
</html>
1、如何改进可以验证邮件地址 输入的数据包含 @ 和点(.)。@ 不可以是邮件地址的首字符,并且 @ 之后需有至少一个点号?
2、函数中的 with 是什么作用?
3、email.focus()获得焦点在这个地方什么作用
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
第一个问题
验证邮箱格式最好使用正则表达式
首先阐述Email Address格式。
Email Address格式为
local-part@domain,Local Part和Domain Part两部分。在Local Part中允许以下字符:
"(),:;<>@[\]它们必须出现在引号"之中,同时对于\"而言,它们在引号中还需要使用\转义,即"\\\""john.smith(comment)@example.com和(comment)john.smith@example.com等同于john.smith@example.comDomain Part可以是hostname或者有方括号包围的ip地址。hostname只能由字母,数字以及
-.组成。注释在Domain Part中也是被允许的。代码实现
http://jsfiddle.net/cattail/bYZcL/
当前该代码存在的主要缺陷
just"not"right@example.com的检验存在问题第二个问题
with能够暂时改变语句中的作用域。它通过with后面的对象所拥有的属性拓展作用域。如field是一个input element,拥有属性value,因而在with语句中可以使用value来读取input中的值。然而,并不推荐使用
with,在Javascript的strict mode中,它是被禁止的。因为使用with语句使得Javascript代码的优化更加困难,因而会降低代码的运行速度。更中要的是,如果传入with的对象不具有在语句中使用的属性,该属性可能会从全局对象读取或者修改,因而造成难以察觉的错误。第三个问题
聚焦使得当提示用户邮箱输入错误时,使得光标聚焦在email输入框中,便于用户修改。
参考资料
Wikipedia-email address:http://en.wikipedia.org/wiki/Email_ad...
Github gist地址:https://gist.github.com/4191834
Validate email address in Javascript http://stackoverflow.com/questions/46...
How far should one take e-mail address validation?http://programmers.stackexchange.com/...
合法的email地址
非法email地址
来自<Javascript权威指南6>对于with的解读
with (object) statementdocument.forms[0].address.valuewith(document.forms[0]) { // Access form elements directly here. For example: name.value = ""; address.value = ""; email.value = ""; }with(o) x = 1;