0

フォームからの送信時に div を非表示にしようとしています。変更は発生しますが、アラート(「リンク」)が終了すると、すべて元に戻ります。

JavaScript:

<script type="text/javascript" language="javascript">
    function checarLogin(user, pass){
        var e;
        if (user.value == "a") {
            if (pass.value == "b") {
                alert("Bienvenido.");
                e = document.getElementById('login').style.display='none';
                alert("link");
            } else
            alert("Usuario o clave incorrectos.");
        } else
            alert("Usuario o clave incorrectos.");

    }
</script>

HTML:

<div id="login">
    <form onsubmit="checarLogin(user, pass)">
    Ingrese usuario y clave para ver los documentos.
    <div id="inlogin" display="none">
        <br><br>
        Usuario <input name="user" type="text"><br><br>
        Clave <input name="pass" id="clave" type="password"><br>
        <input type="submit">
    </div>
    </form>
</div>

<div id="descargas">
    Descargables.
    <div id="indescargas">
    </div>
</div>

ログインDIVを非表示にしたい。

4

3 に答える 3

1

フォームを送信すると、サーバーへのラウンドトリップが行われます。ほとんどの場合、ページが更新され、これによりコンテンツが元の状態に戻ります。これをテストするには、ページを高くし、下にスクロールして送信します。トップに戻った場合は、ページが更新されています。

これを回避するには、代わりに ajax リクエストを使用してフォーム データを送信します。

于 2012-09-28T01:57:06.180 に答える
0

ページはそれ自体に送信しています。returnfalseを追加すると実行されます。http://jsfiddle.net/Y6x5N/

<form onsubmit=" return checarLogin(user, pass);">

function checarLogin(user, pass){
    var e;
    if (user.value == "a") {
        if (pass.value == "b") {
            alert("Bienvenido.");
            e = document.getElementById('login').style.display='none';
            alert("link");
        } else {
        alert("Usuario o clave incorrectos.");
        }
    } else {
        alert("Usuario o clave incorrectos.");
    }
return false;

}​
于 2012-09-28T02:08:39.710 に答える
0

これは、フォームがサーバーに送信されているために発生します。あなたが達成しようとしているのは認証機能だと思いますか?そして、ユーザーが認証されると、ログイン divは削除されますか?

サーバー側のサイトで認証を行うことをお勧めします。これを続行する場合は、パスワードがjavascriptブロックに印刷され、ユーザーが簡単に読み取れるようになります。ユーザーが正常に認証されると、サーバーはログイン せずに別のページを簡単に返すことができますdiv。より簡単で安全です。

于 2012-09-28T02:09:25.653 に答える