2010-09-15 200 views
4

我有一個密碼和確認密碼字段,我不希望用戶只是從第一個字段複製並粘貼在以後的領域。我該怎麼做?密碼和確認密碼

回答

2

簡單口令模式,用戶不能複製文字,不能將其粘貼到其他文本框。 所以你的問題得到解決。給兩個文本框中的密碼模式

1

沒有有效的方法來阻止這種適用於所有瀏覽器的方法。即使存在這樣的解決方案,用戶也可以禁用JavaScript,並根據需要進行復制和粘貼。大多數用戶不會複製和粘貼,因爲這是爲了他們自己的利益,並且是爲了防止錯誤。

+0

是的,但當然,如果您禁用JavaScript,你不能使它的工作... – Aristos 2010-09-15 09:12:31

+3

它仍然是錯誤的,因爲它是一個障礙,自由。如果用戶想複製並粘貼,請讓她這樣做(如果密碼錯誤,這只是她自己的錯)。 – 2010-09-15 09:14:47

+0

好吧,這是一個不同的討論...我會在ui論壇上提出一個問題。 – Aristos 2010-09-15 09:23:02

4

對於密碼類型的字段通常禁用複製功能,因此您不需要執行任何操作。然而,沒有任何東西可以阻止用戶將相同的文本粘貼到其他任何字段中,並且對此您可以做的不多。試圖阻止這種情況會阻止一些用戶想要確保他們的密碼正確地粘貼,以及使用密碼生成器的用戶。

+0

我同意來自密碼生成器的粘貼,爲什麼我所做的不是密碼,而是電子郵件字段! :) – Aristos 2010-09-15 09:42:25

3

這裏是一個辦法......

<asp:TextBox ID="txtEMailVerifyJoin" runat="server" ClientIDMode="Static"  
    autocomplete="off" 
    onpaste="pasteEvent('reg_conf_email');return false;" 
    onkeydown="disablePaste('pasteEvent()','reg_conf_email');" 
    onkeyup="disablePaste('pasteEvent()','reg_conf_email');" 
    oninput="disablePaste('pasteEvent()','reg_conf_email');"   
    ></asp:TextBox> 

而對於JavaScript的

<script> 
    var charCount = document.getElementById("txtEMailVerifyJoin").value.length; 
    var oldVal = eval(document.getElementById("txtEMailVerifyJoin")).value; 

function disablePaste(methodToCall) 
{ 
    newCharCount = document.getElementById("txtEMailVerifyJoin").value.length; 
    oldCharCount = charCount;  
    charCount = newCharCount; 

    if(newCharCount - oldCharCount > 1) 
    { 
     eval(methodToCall);  
     charCount = oldVal.length; 
    } 
    else 
    {  
     oldVal = eval(document.getElementById("txtEMailVerifyJoin")).value; 
    } 
} 

function pasteEvent() 
{ 
    document.getElementById("txtEMailVerifyJoin").value=oldVal; 
    return false; 
} 

function initDisablePaste() 
{ 
    charCount = document.getElementById("txtEMailVerifyJoin").value.length; 
    oldVal = eval(document.getElementById("txtEMailVerifyJoin")).value; 
} 

initDisablePaste(); 
</script> 

它不是我的想法,如果我發現,我看到它,我將它張貼在這裏。

看到它住在這裏: Join Athineon 刪除它。

此命令適用於(對於本頁)上的確認電子郵件地址! (不輸入密碼)

關於用戶界面,如果這是一個好主意,我在這裏做了一個問題:https://ux.stackexchange.com/questions/1488/wondering-if-i-must-let-a-user-copy-paste-the-double-asking-confirm-e-mail-on-the

0

...如果沒有辦法,使用複雜,但100%安全的傳統方法:

聲明一個變量,每個按鍵店變量中文本框的最後一個字母。然後用< *>符號替換文本框的最後一個符號。 但你必須寫退格鍵的代碼,另一部分和Delete鍵刪除信件......

0

簡單方法它真的工作<asp:CompareValidator runat="server" ID="Comp1" ControlToValidate="id" ControlToCompare="ID2" Text="Password mismatch" Font-Size="11px" ForeColor="Red" />

ID1用於添加密碼的文本框ID

id2添加您的確認密碼文本框ID