我使用函数validateEmail(str)遇到了我的电子邮件验证码。有什么建议吗?
//validates email address form
function validateEmail (str)
{
var retVal;
var atpos=retVal.indexOf("@");
var dotpos=retVal.lastIndexOf(".");
if (atpos<1 || dotpos<atpost+2 || dotpos+2>=retVal.length)
{
retVal = false;
return retVal;
}
答案 0 :(得分:4)
有什么建议吗?是。不。
<input type="email" />
问题解决了!
应该注意的是,只要浏览器支持HTML5功能,就可以使用HTML5功能。原因是,验证失败将导致浏览器以非侵入性和一致的本机方式通知用户错误。
较旧的浏览器无法以这种方式验证,但由于规范声明无法识别的type
值应默认为text
,HTML5完全向后兼容,重新进入IE5.5几乎可以肯定甚至更早 - 甚至可能是IE1!
缺乏验证不是问题。验证应始终始终在服务器端处理,无论您在客户端进行何种验证。例如,在PHP中,您可以使用FILTER_VALIDATE_EMAIL
过滤器将其传递给filter_var
。
答案 1 :(得分:1)
您的代码的问题是您创建一个空变量(var retVal
),然后检查此变量而不是给定的字符串:
var retVal;
var atpos=retVal.indexOf("@");
var dotpos=retVal.lastIndexOf(".");
正确的代码是
function validateEmail (str)
{
var retVal;
var atpos=str.indexOf("@");
var dotpos=str.lastIndexOf(".");
if (atpos<1 || dotpos<atpost+2 || dotpos+2>=str.length)
{
retVal = false;
return retVal;
}
// further code
}