2012-03-15 29 views
7

Tôi muốn để ngăn chặn người dùng từ một trong hai:Ngăn chặn sao chép/dán và nhấn chuột phải dành cho textbox (địa chỉ email)

  1. Sao chép và dán từ hộp văn bản đầu tiên thứ hai
  2. Nhấp chuột phải và sử dụng menu ngữ cảnh để sao chép và dán từ hộp văn bản đầu tiên sang hộp văn bản thứ hai.

Điều này không hoạt động.

<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 WORKING !!!!

<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

Xin đừng tiền tố tiêu đề của bạn với "ASP.Net C#" và như vậy. Đó là những gì các thẻ cho. –

Trả lời

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

Khi sử dụng jQuery này là khá đơn giản và nó là hoàn toàn tương thích với 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> 

Dưới đây là một bài viết giải thích cách làm việc này cùng với ASP.NET:
http://www.dotnetcurry.com/ShowArticle.aspx?ID=398

Như Scott đã chỉ ra: Trong sản xuất, bạn nên đặt tham chiếu jQuery ở dưới cùng của html của bạn tuy nhiên (vẫn còn bên trong thẻ body).

CẬP NHẬT
Vì bạn yêu cầu ngăn chặn menu ngữ cảnh hoàn toàn bạn có thể làm một cái gì đó như thế này:

Thêm kịch bản này:

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

Các mục trình đơn không được hiển thị khi false được trả về . Dưới đây là một tổng quan về browsersupport cho việc này:
http://help.dottoro.com/ljhwjsss.php

+0

Tôi sẽ chọn các phần tử theo lớp $ (". NoCopy"). Bind (... Sau đó, hạn chế này có thể được đặt trên bất kỳ phần tử nào với lớp CSS – David

+0

+1 cho câu trả lời này. giải pháp có thể được bỏ qua bằng cách vô hiệu hóa JS trong trình duyệt.Nhưng đó là vượt quá người dùng trung bình – mgnoonan

+0

Cảm ơn bạn Vấn đề là tôi không muốn một cảnh báo.Tôi muốn trình đơn ngữ cảnh cửa sổ không hiển thị khi bạn phải- bấm vào và rằng các phiên đấu giá ctrl của sao chép và dán không được phép – Susan

Các vấn đề liên quan