1

ユーザーが電子メールとパスワードを入力する必要があるサインアップ フォームがあります。どちらも 2 つの別々のテキスト ボックスに入力されています。ユーザーがクリックできるボタンを提供して、ユーザーがボタンをクリックしたときにパスワード (マスクされている) がポップアップに表示されるようにしたいと考えています。

現在、これに対する私の JavaScript コードは次のとおりです。

    function toggleShowPassword() {       
        var button = $get('PASSWORD_TEXTBOX_ID');
        var password;
        if (button)
        {
            password = button.value;
            alert(password);
            button.value = password;  
        } 
   }

問題は、ユーザーがボタンをクリックするたびに、Firefox と IE の両方でパスワードが消去されることです。パスワードを再入力しなくても確認できるように、クリア テキストでパスワードを表示できるようにしたいと考えています。

私の質問は次のとおりです。

  1. ボタンをクリックするたびにパスワードフィールドがリセットされ続けるのはなぜですか?

  2. ユーザーが自分のパスワードをクリアテキストで見た後、パスワードフィールドがクリアされないようにするにはどうすればよいですか?

4

8 に答える 8

1

クリックするたびにサーバーにリクエストを送信しているようです。ページの読み込みごとにパスワードボックスがリセットされるのは、ブラウザの一般的な動作です。

于 2008-09-04T18:45:29.530 に答える
1

ASP.NETを使用しているとは言わなかったが、...

設計上、ASP.NETは、ポストバック中に、モードがパスワードであるTextBoxコントロールの値をクリアします。次のコードを使用して、サブクラスでこれを回避します。

// TextModeが「パスワード」の場合、Textプロパティは機能しません
if(TextMode == System.Web.UI.WebControls.TextBoxMode.Password)
    属性["値"]=stringValue;
于 2008-09-04T18:45:56.890 に答える
1

ボタンでフォームを送信したくない場合は、「送信」ではなく「ボタン」と入力してください。たとえば、次のようなことを行うことができます。

<input type="button" value="Show My Password" onclick="toggleShowPassword()"/>
于 2008-09-04T18:49:35.807 に答える
1

HTMLの場合:

<input type="button" onclick="toggleShowPassword();">

フォームが投稿されないようにするには、「送信」ではなく「ボタン」を使用する必要があります。

于 2008-09-04T18:52:33.710 に答える
1

動作するバージョンの簡単な例を示しました。

<html>
    <head>
        <script type="text/javascript" src="prototype.js"></script>
        <script type="text/javascript">
            function toggleShowPassword() {       
                var textBox = $('PasswordText');
                if (textBox)
                {
                    alert(textBox.value);  
                } 
            }
        </script>
    </head>
    <body>
        <input type="password" id="PasswordText" /><input type="button" onclick="toggleShowPassword();" value="Show Password" />
    </body>
</html>

重要なのは、入力がボタンタイプであり、送信ではないということです。IDで要素を取得するためにプロトタイプライブラリを使用しました。

于 2008-09-04T18:53:55.670 に答える
1

パスワード フィールドの値を設定しようとするスクリプトに、ブラウザに問題があると思われます。

button.value = password;

このコード行には実際の目的はありません。password.value値を読み取って で使用している前の行では影響を受けませんalert()

これは、コードのより単純なバージョンである必要があります。

function toggleShowPassword() {       
    var button = $get('PASSWORD_TEXTBOX_ID');
    if (button)
    {
        alert(button.value);
    } 

}

編集: 実際に簡単なテストを行ったところ、Firefox はパスワード フィールドの値をbutton.value = "blah". したがって、これは当てはまらないようです...他の人が示唆しているように、ASP.NETコードがポストバックを引き起こしているかどうかを確認します。

于 2008-09-04T18:38:54.023 に答える
0

はぁ!

ここでの答え:http: //forums.asp.net/p/1067527/1548528.aspx

私は解決策を見つけました...修正は単純な変更でした

  OnClientClick="myOnClick()"

  OnClientClick="return myOnClick()"

これが完全に修正されたコードです...

function myOnClick(){//他のアクションを実行します...falseを返します; } タイトルのないページ

于 2008-09-04T19:22:51.857 に答える
0

button.value = password;値を読み取っても変更されないため、実行する必要はありません。クリアされる理由はわかりません。JavaScript がパスワード フィールド値の変更を許可していない可能性があります。

于 2008-09-04T18:41:42.673 に答える