黑马程序员技术交流社区

标题: 求助 关于javascript 和 正则表达式的 [打印本页]

作者: 史卫平    时间: 2011-8-23 00:09
标题: 求助 关于javascript 和 正则表达式的
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>第9、10题</title>
<script type="text/javascript">
function submitClick(){
var regex1=/^[A-Za-z_][0-9A-Za-z_]$/;
var regex2=/^[0-9A-Za-z_]{6,16}$/;
var username= document.forms[0].username.value;
if(username==""){alert("用户名称不能为空");return false;}
var password1 = document.forms[0].password1.value;
if(password1==""){alert("用户密码不能为空");return false;}
var password2 = document.forms[0].password2.value;
if(password2==""){alert("确认密码不能为空");return false;}
if(!(regex1.test(username))){
   alert("用户名必须是字母数字或下划线, 不能以数字开头");
  return false;
}
document.forms[0].username.focus();
if(!(regex2.test(password1))){
     alert("密码必须6-16位字母数字下划线");
     return false;
}
if (password1!=password2){
    alert("两次输入密码不一致!请重新输入");
    return false;
}
var habby= document.forms[0].habby.value;
if(habby==""){alert("用户爱好不能为空");return false;}
var city= document.forms[0].city.value;
if(city==""){alert("用户城市不能为空");return false;}
var introduce= document.forms[0].introduce.value;
if(introduce==""){alert("用户介绍不能为空");return false;}
}
</script>
</head>
<body>
<form action="" method="get">
用户名<input type="text" name="username"/><br/>
密码<input type="password" name="password1"/><br/>
确认密码<input type="password" name="password2"/><br/>
<input type="radio" name="sex" value="male"/>男<br/>
<input type="radio" name="sex" value="female"/>女<br/>
<select name="city">
<option value="nj">南京</option>
<option value="bj">北京</option>
<option value="tj">天津</option>
<option value="dj">东京</option>
</select><br/>
游泳<input type="checkbox" name="habby" value="swimming"/><br/>
阅读<input type="checkbox" name="habby" value="reading"/><br/>
篮球<input type="checkbox" name="habby" value="basketball"/><br/>
跑步<input type="checkbox" name="habby" value="running"/><br/>
介绍<textarea name="introduce"  cols="20" rows="10" ></textarea><br/>
<input type="submit" name="submit" value="提交" />
</form>
</body>
</html>

首先正则表达式我还没搞懂,看了张老师视频,不过基本都是概念,接受消化还需实践
因为这是test题,我就模仿网上写了两个表达式,因该没问题,不过这个运行起来,在第一步的时候,有时候正常,有时候就有问题,除了正则表达式之外,其他的我也看不出来问题。
哪位帮忙看看
作者: 匿名    时间: 2011-8-23 00:48
没关系,我当时验证的也没做出来,直接交了,照过。。。。正则表达式简单点的可以看看马士兵正则表达式那一讲,了解下行了,一般用到的网上均有。也不是说不让你学这个,但时间应该花在刀刃上,百度百科中说,要学好正则表达式,相当于学一门语言。。。
作者: 匿名    时间: 2011-8-23 06:53
我正准备看马士兵的,马老师的例子多
作者: 匿名    时间: 2011-8-23 08:13
我猜想  由于你在表单内打上了空格,
var username= document.forms[0].username.value;
if(username==""){alert("用户名称不能为空");return false;}
这个就失效了.

你的这段javascript应该不会起作用,
你想他起作用这里要做修改
<input type="submit" name="submit" value="提交" onClick="return submitClick()"/>
也就是在原有的基础上加上onClick="return submitClick()"

还有一种写法,你每次验证完不必都 return false;
可以将button的type改成button
就可以将return false去掉;
然后在所有验证通过后手动提交表单
if(....)
{
alert('验证失败');
}
else
{
document.forms[0].submit()
}
作者: 匿名    时间: 2011-8-23 08:38
这if(username==""){alert("用户名称不能为空");return false;} 是不是要写成
if(username=="" || username != null){alert("用户名称不能为空");return false;} 啊
作者: 匿名    时间: 2011-8-23 08:59
if(username==""){alert("用户名称不能为空");return false;}
这个代码没什么问题吗  不会有什么null的问题吧
<input type="submit" name="submit" value="提交" onClick="return submitClick()"/>
这个onClick 原来代码有的,不知道怎么发帖的时候就没了,不应该啊


sunyu:
我猜想  由于你在表单内打上了空格,
var username= document.forms[0].username.value;
if(username==""){alert("用户名称不能为空");return false;}
这个就失效了.


这个什么意思? 什么叫表单内打上了空格
作者: 匿名    时间: 2011-8-23 09:22
就是在文本框 输入空格符   看上去是 空白的 其实里面有个空格符
所以if(username=="")这个条件不成立
作者: 匿名    时间: 2011-8-23 11:22
把web开发的源码跟我发一份,谢了
[email]847805430@qq.com[/email]
方老师的
作者: 匿名    时间: 2011-8-23 22:12
你写个函数不调用,即使你的正则表达式多么正确,函数都不会运行,起作用就出错了!
你只要在form的提交事件调用函数
<form action="" method="get" onsubmit="return submitClick()">
就行了。:) 认真点噢!嘿嘿……
作者: 匿名    时间: 2011-8-24 08:55
document.forms[0].username.value.replace(/(^\s*)|(\s*$)/g,"");
这句话能把输入的数据前后的空格去掉吗
作者: 匿名    时间: 2011-8-24 09:17
var regex1=/^[A-Za-z_]\w*/;


去掉了\w外面的方括号  *号外面的大括号也去掉 好像可以哎

没时间试验了,端盘子去了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2