2010-09-15 206 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