0

だから私はフォーム検証プロジェクトに取り組んでいます。入力が満たさなければならない一連の基準が与えられ、正規表現を使用してすべてをチェックする必要があります。私はすべてをコード化しており、最初の入力を除いてすべてが完全に機能しています。正規表現に対してチェックしますが、一致に問題がある場合は、false ではなく true を返し、ウィンドウを「フォームが受け入れられました」ページに移動します。

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

それ自体は本当の答えではありませんが、50人の担当者になるまでコメントできないので、これが私が取り組まなければならないものです.

とにかく、あなたのコードは Linux 上の Chromium 上のJSFiddleでうまく動作します。ターゲット システムに関する情報を投稿していただけますか? 使用しているブラウザと OS を教えてください。また、検証に合格する必要があるものと合格しないものを明確にすることもできます。私は正規表現に従ってみました(私は正規表現の経験がすべてではありません)、必要なものすべてを通過するように見えます。この場合、数字や記号のないものは何でもあるようです。

別の試みとして、スクリプトを使用しようとした後にコンソール ログを投稿して、問題の実際の場所に関する有用な情報があるかどうかを確認します。

于 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

else if ステートメントの代わりに 2 つの if ステートメントを使用することをお勧めします。

于 2012-10-17T19:01:47.717 に答える