所以我正在开展一个表单验证项目。我们给出了一组我们的输入必须满足的标准,我们必须使用正则表达式来检查所有内容。我已经完成了所有编码,除了第一个输入外,一切都很完美。它会检查正则表达式,但如果匹配有任何问题,它将返回true而不是false,并将窗口带到“表单已接受”页面。
function validate_registration(){
var RegExpName = /^[A-Z a-z]+$/;
var RegExpCourseId = /^WEB*([1-9]{1})*[0-9]{2}$/;
var studentName = document.reg_page.student_name.value;
var courseID = document.reg_page.course_id.value;
if (!RegExpName.test(studentName))
{
alert("Please enter the name on your Student ID");
document.reg_page.s.focus();
document.reg_page.s.select();
return false;
}
else if (!RegExpCourseId.test(courseID))
{
alert("Please enter a valid Course ID");
document.reg_page.c.focus();
document.reg_page.c.select();
return false;
}
}
<div id="container">
<div id="page">
<form name="reg_page" method="post" onSubmit="return validate_registration();" action="thanks.htm" >
<table id="form">
<tr>
<td colspan="2"><div id="table_title">Web Registration Form</div></td>
</tr>
<tr>
<td class="label">Student Name:</td><td><input name="student_name" id="s" size="15" /></td>
</tr>
<tr>
<td class="label">Course ID:</td><td><input name="course_id" id="c" size="10" /></td>
</tr>
这是javascript和表单的相关部分。课程ID区域完美运作。如果它为空,则返回false,并突出显示文本输入字段。为什么学生名不会这样做?
答案 0 :(得分:1)
我没有遇到任何问题。我不得不添加一个提交按钮,我显然没有thanks.htm页面,但这里是JSFiddle:http://jsfiddle.net/BmLYD/3/。我做了什么不同于你正在尝试/你准确放置代码的地方吗?
答案 1 :(得分:1)
本身并不是真正的答案,但是因为在我有50个代表之前我不会发表评论,所以这就是我必须要做的事情。
无论如何,在{Chromium on Linux上的JSFiddle中,您的代码可以正常使用。您可以发布有关目标系统的信息吗?您使用的浏览器和操作系统是什么?您还可以澄清应该和不应该通过验证的内容。我试着遵循正则表达式(我不是那些经验丰富的正则表达式),看起来它传递了应有的一切,在这种情况下似乎是没有数字或符号的东西。
您可以尝试的另一件事是在尝试使用脚本后发布控制台日志,看看是否有关于问题实际位置的有用信息。
答案 2 :(得分:0)
这是整个代码吗?!
此代码适用于我(FireFox):
<!DOCTYPE html>
<html>
<head>
<script language="JavaScript">
<!--
function validate_registration(){
var RegExpName = /^[A-Z a-z]+$/;
var RegExpCourseId = /^WEB*([1-9]{1})*[0-9]{2}$/;
var studentName = document.reg_page.student_name.value;
var courseID = document.reg_page.course_id.value;
if (!RegExpName.test(studentName))
{
alert("Please enter the name on your Student ID");
document.reg_page.s.focus();
document.reg_page.s.select();
return false;
}
else if (!RegExpCourseId.test(courseID))
{
alert("Please enter a valid Course ID");
document.reg_page.c.focus();
document.reg_page.c.select();
return false;
}
}
//-->
</script>
</head>
<body>
<form name="reg_page" method="post" onSubmit="return validate_registration();">
<table id="form">
<tr>
<td colspan="2"><div id="table_title">Web Registration Form</div></td>
</tr>
<tr>
<td class="label">Student Name:</td><td><input name="student_name" id="s" size="15" /></td>
</tr>
<tr>
<td class="label">Course ID:</td><td><input name="course_id" id="c" size="10" /></td>
</tr>
<input type="submit" value="submit">
</table>
</form>
</body>
</html>
你可能只是忘了关闭这个功能吗?
答案 3 :(得分:0)
如果使用jQuery是一个选项,也许可以查看jQuery验证插件? http://docs.jquery.com/Plugins/Validation
答案 4 :(得分:-1)
我建议只使用两个if语句而不是else if语句,看看它是做什么的。