2008-09-04 13 views
0

ユーザーにメールとパスワードの入力を要求するサインアップフォームがあります。どちらも2つのテキストボックスに分かれています。ユーザーがボタンをクリックしたときにパスワード(マスクされている)がポップアップに表示されるように、ユーザーがクリックできるボタンを提供したいと思います。次のようにJavaScriptを使ってサーバーの操作を行わずにボタンのクリックをキャッチ

現在、このための私の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. ユーザーがパスワードをクリアテキストで確認したら、パスワードフィールドがクリアされないようにするにはどうすればよいですか?

答えて

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で要素を取得するためにprototypeライブラリを使用しました。

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コードが他の人が提案したようにポストバックを引き起こしているかどうかを確認します。

0

button.value = password;の値を読み取っても変更されないため、button.value = password;を入力する必要はありません。私はなぜそれがクリアされているのかわからない、多分JavaScriptはパスワードフィールド値が変更されることを許可しません。

1

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

2

あなたはASP.NETを使用していた言わなかったが...設計することで

は、ASP.NETは、ポストバック時にモードパスワードであるTextBoxコントロールの値をクリアします。私は、次のコードで、サブクラス内でこの問題を回避:あなたはボタンがフォームを送信したくない場合は

 
// If the TextMode is "password", the Text property won't work 
if (TextMode == System.Web.UI.WebControls.TextBoxMode.Password) 
    Attributes[ "value" ] = stringValue; 
1

、それはむしろ「提出」より「ボタン」を入力していることを確認してください。あなたのHTMLで

<input type="button" value="Show My Password" onclick="toggleShowPassword()"/> 
1

:たとえば、あなたはこのような何かを行う可能性があります

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

あなたは投稿からフォームを防ぐために、むしろ「送信」よりも「ボタン」を使用する必要があります。

0

hah!

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

私は解決策を考え出した...修正は

OnClientClick="return myOnClick()" 

への簡単な変更

OnClientClick="myOnClick()" 

ここで完全に修正されたコードだし... 。

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

関連する問題