我的检查表单的javascript,在提交按钮上加了一个onclick="return checkform(form1)

<scripttype="text/javascript"><!--//检查一个输入域是否为空functionisEmpty(str){if((str==null)||(... <script type="text/javascript">
<!--
//检查一个输入域是否为空
function isEmpty(str)
{
if((str==null)||(str.length==0))
return true;
else
return false;
}

//函数isEmail用来判断一个输入域是否为合法的电子邮件地址
function isEmail(theStr)
{
var atIndex=theStr.indexOf('@');
var dotIndex=theStr.indexOf('.',atIndex);
var flag=true;
theSub=theStr.subString(0,dotIndex+1);
//四种情况:'@'字符为首,有两个'@'字符,域名只有一个字符,以'.'结尾
if((atIndex<1)||(atIndex!=theStr.lastIndexOf('@'))||(dotIndex<atIndex+2)||(theStr.length<=theSub.length))
{
flag=false;
}
else
{
flag=true;
}
return flag;
}

//检查表单
function checkform(Frm)
{
var flag=true;
if(isEmpty(Frm.name.value))
{
alert("请输入名字");
Frm.name.focus();
flag=false;
}
else if(!isEmail(Frm.email.value))
{
alert("您的电子邮件输入有误");
Frm.email.focus();
flag=false;
}
else if(isEmpty(Frm.title.value))
{
alert("请输入主题");
Frm.title.focus();
flag=false;
}
else if(isEmpty(Frm.suggestions.value))
{
alert("请输入意见");
Frm.suggestions.focus();
flag=false;
}
return flag;
}
-->
</script>

表单:
<form name="form1" method="post" action="idea.jsp" >
<label></label>
<table width="646" border="0">
<tr>
<td>您的姓名:</td>
<td><label>
<input type="text" name="name" id="name">
</label></td>
</tr>
<tr>
<td>您的E-mail:</td>
<td><label>
<input type="text" name="email" id="email">
</label></td>
</tr>
<tr>
<td>主题:</td>
<td><label>
<input type="text" name="topic" id="topic">
</label></td>
</tr>
<tr>
<td>您的意见:</td>
<td><label>
<textarea name="suggestions" id="suggestions" cols="45" rows="5"></textarea>
</label></td>
</tr>
<tr>
<td><label>
<input type="submit" name="tijiao" id="tijiao" value="提交意见" onclick="return checkform(form1)">
<input type="reset" name="clear" id="clear" value="清除重填">
</label></td>
<td> </td>
</tr>
</table>
<p> </p>
</form>
为什么我的检查email地址是否合法的函数没有被执行到?onclick="return checkform(form1)和onclick="return checkform(this)的执行效果也不一样。前一个有错的话页面会停止跳转,后一个有错的话还会自动跳转,为啥啊?
展开
 我来答
ganhuanxp
2011-02-16 · TA获得超过363个赞
知道小有建树答主
回答量:259
采纳率:0%
帮助的人:264万
展开全部
问题1:事件注册错误 不应该对submit的onclick注册,应该对form的onsubmit进行注册,如下
<form name="form1" method="post" action="idea.jsp" onsubmit="return checkform(this);">
问题2:checkform的错误,如下
function checkform(Frm)
{
var flag=true;
if(isEmpty(Frm.name.value))
{
alert("请输入名字");
Frm.name.focus();
//这里最好就return 效率高得很,否则还要继续判断
//如 return false;
flag=false;
}
//一定要判断Frm.email.value是否为空,否则后续错误
if(isEmpty(Frm.email.value)||isEmail(Frm.email.value))
{
alert("您的电子邮件输入有误");
Frm.email.focus();
flag=false;
}
//主题的命名错误,不是title 应为topic
if(isEmpty(Frm.topic.value))
{
alert("请输入主题");
Frm.topic.focus();
flag=false;
}
if(isEmpty(Frm.suggestions.value))
{
alert("请输入意见");
Frm.suggestions.focus();
flag=false;
}
alert(flag);
return flag;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式