0

所以我正在做一个表单验证项目。我们得到了一组输入必须满足的标准,我们必须使用正则表达式来检查所有内容。我已经把所有的东西都编码了,除了第一个输入之外,一切都很完美。它检查正则表达式,但如果匹配有任何问题,它将返回 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,并突出显示文本输入字段。为什么它不会对学生姓名做同样的事情?

4

5 回答 5

1

我对此没有任何问题。我必须添加一个提交按钮,我显然没有thanks.htm 页面,但这里是JSFiddle:http: //jsfiddle.net/BmLYD/3/。我做了什么不同于你正在尝试的事情/你将代码放在哪里?

于 2012-10-17T20:02:19.827 回答
1

本身并不是真正的答案,但由于 SO 在我有 50 个代表之前不允许我发表评论,这就是我必须处理的。

无论如何,您的代码在 Linux 上 Chromium 上的JSFiddle中对我来说很好。您能否发布有关您的目标系统的信息?你用的是什么浏览器和操作系统?您还可以澄清什么应该和不应该通过您的验证。我尝试遵循正则表达式(我对正则表达式的经验并不多),它看起来像它应该通过的一切,在这种情况下似乎是任何没有数字或符号的东西。

您可以尝试的另一件事是在尝试使用脚本后发布控制台日志,以查看是否有一些有用的信息来说明问题实际出在哪里。

于 2012-10-17T20:02:24.143 回答
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>

您可能只是忘记关闭该功能吗?

于 2012-10-17T18:02:26.843 回答
0

如果可以选择使用 jQuery,也许可以查看 jQuery 验证插件? http://docs.jquery.com/Plugins/Validation

于 2012-10-17T21:43:20.957 回答
-1

我建议只使用两个 if 语句而不是 else if 语句,看看它的作用。

于 2012-10-17T19:01:47.717 回答