1

私のエラーがPHP経由でフォーム自体に送信されたことが原因かどうかはわかりませんが、関数にヒットしていないだけで、何が返されても送信されます。ここで何が欠けているのかわかりません。これが私のフォームです

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
    <title>Login Page</title>
    <script type="text/javascript" src="js/functions.js"></script>
    <!--Internal for simplicity or until bigger page -->
    <style type="text/css"> 
        #login div{display:inline;color:red;}
        input{margin-right:20px;}
    </style>
</head>
<body>
<form name="login" id="login" action="<?php $_SERVER['PHP_SELF'] ?>" method="POST" onsubmit="return CheckLogin()">
    <?php if($_POST && $win == false): ?>
        <div>Login Unsuccessful. Please Try Again</div><br />
    <?php endif ?>
        <input type="text" size="10" name="username" /><div></div>
            <br />
        <input type="password" size="10" name="password" /><div></div>
            <br />
    <input type="submit" text="Submit" />
</form>
<a href="register.php">Registration Page</a>
</body>
</html>

実際には、ユーザー名/パスワードが空かどうかを確認しているだけですが、とにかくこの関数を介して送信します:

function CheckLogin()
{
    window.alert("made it here");
    var login = document.forms["login"];
    var user = login["username"].value;
    var pass = login["password"].value;

    if(user == null || user == "")
    {
        window.alert("user");
        return false;
    }  

    return false;
}

私が見逃しているのはばかげていると確信しているので、これを送信する前に関数名を再確認し、javascript エラーが発生していないかどうかを確認しましたが、どちらも問題ではありませんでした。誰かが私のエラーを見ますか?

要点は、ユーザー名またはパスワードが空または null の場合、PHP を実行したり、フォームをそれ自体に送信したりしたくないということです。

編集PHP 機能を除いた完全な HTML ページを追加しました。また、何らかの理由で、JavaScript リンクが「リンク」しない代わりに、インスペクト要素または firebug を介して埋め込まれているように、ヘッダーに直接コンテンツを表示できることにも注意してください。これが問題の原因かもしれませんが、理由は不明です。

編集念のためdoctypeを追加しましたが、それでも役に立ちません。実際にリンクするのではなく、通常どおりにJavaScriptをページに自動的に埋め込み、CDATAに配置します。IE、Firefox、Chrome でこれを行います...

私のPHPに何か関係があると誰かが思ったら投稿できますが、投稿せずにサーバー側のコードがクライアント側のコードとどのようにやり取りできるかわかりません。

4

2 に答える 2

2

コードに小さなエラーがいくつかあります。まず第一に、入力用の「テキスト」という属性はありません。あなたはそれを見逃したと思います:) 最初にそれらを検証してみてください。ここをチェックして、入力が取ることができる属性を確認してください。次に、このjsfiddleの例は Chrome と FF で適切に動作します。Ubuntu を使用しているため、IE でテストできません。

フォーム属性を修正した後、jsfiddle の例が機能し始めました。それに関連しているかどうかはわかりませんが、コードが機能しないことについての唯一の論理的な説明のようです。

于 2011-12-04T10:54:10.487 に答える
1

あなたのコードは正常に動作します。別の Web ブラウザーで実行してみてください。ブラウザにインストールした拡張機能の 1 つが JS エラーを引き起こしている可能性があります (Chrome で Google Dictionary を使用すると問題が発生していました)。

于 2011-12-04T08:58:05.270 に答える