2012-03-15 1 views
7

Я хотел бы запретить пользователю либо:Предотвращение копирования/вставки и правой кнопкой мыши, предназначенные для текстового поля (адрес электронной почты)

  1. Копирование и вставка из первого текстового поля ко второму
  2. правой кнопкой мыши и используйте контекстное меню для копирования и вставки из первого текстового поля во второе.

Это не работает.

<html> 
    <head runat="server"> 
    <title>Confirm email page</title> 
    <script type="text/javascript" language="javascript"> 
    function DisableRightClick(event) { 
     //For mouse right click 
     if (event.button == 2) { 

     } 
    } 
    function DisableCtrlKey(e) { 
     var code = (document.all) ? event.keyCode : e.which; 
     // look for CTRL key press 
     if (parseInt(code) == 17) { 
      window.event.returnValue = false; 
     } 
    } 
    </script> 

    </head> 
    <body style="font-family: Verdana; font-size: 1em"> 
    <form id="form1" runat="server"> 
     <div> 
     <h1>Confirm Email</h1> 
     <asp:Label ID="Label2" runat="server" Text="Enter Email Address: "></asp:Label> 
     <asp:TextBox ID="TextBox2" runat="server" oncopy="return false" onMouseDown="DisableRightClick(event)" ></asp:TextBox><br /> 
     <asp:Label ID="Label3" runat="server" Text="Confirm Email Address: "></asp:Label> 
     <asp:TextBox ID="TextBox3" runat="server" onKeyDown="return DisableCtrlKey(event)"></asp:TextBox><br /> 
     </div> 
    </form> 
    </body> 
</html> 

GOT IT РАБОТА !!!!

<div> 
<h1>Copy Paste Preventer!!!</h1> 
    <asp:Label ID="Label1" runat="server" Text="Enter Username: "></asp:Label> 
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br /> 
    <asp:Label ID="Label2" runat="server" Text="Enter Email Address: "></asp:Label> 
    <asp:TextBox ID="email" runat="server" oncopy="return false" onpaste="return false" oncut="return false" oncontextmenu="forms[0].elements[0].value++; return false"></asp:TextBox><br /> 
    <asp:Label ID="Label3" runat="server" Text="Confirm Email Address: "></asp:Label> 
    <asp:TextBox ID="TextBox3" runat="server" oncopy="return false" onpaste="return false" oncut="return false" oncontextmenu="forms[0].elements[0].value++; return false"> </asp:TextBox><br /> 
</div> 
+0

Пожалуйста, не префикса своих названий с «ASP.Net C#» и тому подобными. Для этого нужны теги. –

ответ

2
<div> 
<h1>Copy Paste Preventer!!!</h1> 
    <asp:Label ID="Label1" runat="server" Text="Enter Username: "></asp:Label> 
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br /> 
    <asp:Label ID="Label2" runat="server" Text="Enter Email Address: "></asp:Label> 
    <asp:TextBox ID="email" runat="server" oncopy="return false" onpaste="return false" oncut="return false" oncontextmenu="forms[0].elements[0].value++; return false"></asp:TextBox><br /> 
    <asp:Label ID="Label3" runat="server" Text="Confirm Email Address: "></asp:Label> 
    <asp:TextBox ID="TextBox3" runat="server" oncopy="return false" onpaste="return false" oncut="return false" oncontextmenu="forms[0].elements[0].value++; return false"> </asp:TextBox><br /> 
</div> 
4

При использовании JQuery это довольно просто, и он полностью совместим с ASP.NET:

<script type='text/javascript' src='http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js'> 
</script> 
<script type="text/javascript"> 
    $(function() { 
    $('input[id$=TextBox2]').bind('cut copy paste', function(e) { 
      e.preventDefault(); 
      alert('You cannot ' + e.type + ' text!'); 
     }); 
    }); 
</script> 

Вот статья, которая объясняет, как это работает вместе с ASP.NET:
http://www.dotnetcurry.com/ShowArticle.aspx?ID=398

Как указал Скотт: в процессе производства вы должны поместить ссылку jQuery на нижнюю часть вашего html (все еще внутри тега тела).

UPDATE
Поскольку вы просили, чтобы предотвратить контекстное меню полностью вы можете сделать что-то вроде этого:

Добавить этот скрипт:

<script type="text/javascript"> 
    document.getElementById('TextBox2').oncontextmenu = function(){ 
     return false; 
    }; 
</script> 

Пункт меню не отображается, когда false возвращается , Вот обзор browsersupport для этого:
http://help.dottoro.com/ljhwjsss.php

+0

Я бы выбрал элементы по классу $ (". NoCopy"). Bind (... Тогда это ограничение может быть помещено на любой элемент с этим классом CSS – David

+0

+1 для этого ответа. Чтобы быть тщательным, любой Javascript решение можно обойти, отключив JS в браузере, но это выходит за рамки обычного пользователя. – mgnoonan

+0

Спасибо. Проблема в том, что я не хочу предупреждения. Я бы предпочел, чтобы контекстное меню Windows не отображалось, клик и что ctrl fuctions копирования и вставки не разрешены. – Susan