2008-09-04 33 views
0

我有一個註冊表單,要求用戶輸入他們的電子郵件和密碼,兩者都在兩個單獨的文本框中。我想提供一個用戶可以單擊的按鈕,以便在用戶單擊按鈕時彈出的密碼(將被屏蔽)將出現在彈出窗口中。在沒有服務器交互的情況下在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. 爲什麼password字段不斷收到與每個按鈕復位點擊?

  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> 

的關鍵是輸入類型的按鈕,而不是提交。我用prototype庫通過ID檢索元素。

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;,因爲讀取值不會改變它。我不確定它爲什麼被清除,也許JavaScript不允許修改密碼字段值。

1

聽起來您每次點擊都要對服務器發出請求,每個頁面加載中重置的密碼框是瀏覽器的典型行爲。

2

你沒有說你正在使用ASP.NET,但...

按照設計,ASP.NET回發期間清除TextBox控件,其方式是password的值。我解決這個在子類中使用下面的代碼:

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

如果你不想按鈕提交表單,然後確定它的類型是「按鈕」,而不是「提交」。例如,你可能會做這樣的事情:

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

在HTML:

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

你需要使用「按鈕」,而不是「提交」,以防止你的表格可以發佈。

0

哈!如果在這裏

答案: http://forums.asp.net/p/1067527/1548528.aspx

我想出解決方案......修復很簡單變化

OnClientClick="myOnClick()" 

OnClientClick="return myOnClick()" 

這裏是完全糾正代碼.. 。

function myOnClick(){ //執行一些其他操作... return false; } 無標題頁

相關問題