2010-09-15 3 views

ответ

2

простые в пользовательском режиме пароля не может скопировать текст и не может вставить его в другом тексте коробка. поэтому ваша проблема разрешится в обеих Дай взгляд на TextBox в режиме пароля

1

Не существует эффективного способа остановить это, что работает во всех браузерах. Даже если такое решение существует, пользователь может просто отключить JavaScript и просто скопировать и вставить, если потребуется. Большинство пользователей не копируют и не вставляют, поскольку это для их собственной выгоды и является предотвращение ошибок.

+0

Да, есть, но, конечно, если вы отключите javascript, вы не сможете заставить его работать ... – Aristos

+3

Это все еще неправильно, поскольку это препятствие для пользователей, свобода. Если пользователь хочет скопировать и вставить, пусть она это сделает (это только ее собственная ошибка, если она ошибочно вводит пароль). –

+0

Хорошо, это другое обсуждение ... Я задам вопрос на форуме ui. – Aristos

4

Функциональность копирования обычно отключается для полей типа пароля, поэтому вам не нужно ничего делать. Однако нет ничего, что помешало бы пользователю вставлять один и тот же текст в оба поля из других источников, и вы не можете много сделать с этим. Попытка предотвратить это остановит некоторых пользователей, которые хотят быть уверенными, что у них есть свой пароль прямо от вставки в него, а также пользователей, которые используют генераторы паролей.

+0

Я соглашаюсь на вставку из генератора паролей, поэтому то, что я сделал, НЕ для пароля, но для поля электронной почты! :) – Aristos

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% гарантия безопасности классического метода:

Объявляет переменный и на каждый магазине при нажатии на кнопку последнюю букву текстового поля в переменной. Затем замените последний символ текстового поля на символ < *>. Но тогда вы должны написать еще части кода для BackSpace и удалить ключи для удаления букв ...

0

Простой метод Ее действительно работает <asp:CompareValidator runat="server" ID="Comp1" ControlToValidate="id" ControlToCompare="ID2" Text="Password mismatch" Font-Size="11px" ForeColor="Red" />

id1 для добавить свой пароль текстовое поле ID

id2 для добавления текстового поля подтверждения для подтверждения ID

Смежные вопросы