2012-03-15 13 views
7

Vorrei evitare che un utente sia:Prevenire copia/incolla e clic destro significato per testo (indirizzo e-mail)

  1. Copia e incolla dalla prima casella di testo per la seconda
  2. pulsante destro del mouse e utilizzare il menu di scelta rapida per copiare e incollare dalla prima casella di testo al secondo.

Questo non funziona.

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

ottenuto che funziona !!!!

<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

Si prega di non inserire il prefisso vostri titoli con "ASP.Net C#" e così via. Ecco a cosa servono i tag. –

risposta

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

Quando utilizzando jQuery questo è abbastanza semplice ed è completamente compatibile con 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> 

Ecco un articolo che spiega come funziona insieme con ASP.NET:
http://www.dotnetcurry.com/ShowArticle.aspx?ID=398

Come ha sottolineato Scott: In produzione, dovresti inserire il riferimento jQuery nella parte inferiore del tuo html (comunque all'interno del tag body).

UPDATE
Dal momento che hai chiesto di evitare che il menu contestuale del tutto si può fare qualcosa di simile:

Aggiungi questo script:

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

La voce di menu non è visualizzato quando false viene restituito . Ecco una panoramica di browsersupport per questo:
http://help.dottoro.com/ljhwjsss.php

+0

Vorrei selezionare gli elementi per classe $ (". NoCopy"). Bind (... Quindi questa limitazione può essere posizionata su qualsiasi elemento con quella classe CSS – David

+0

+1 per questa risposta. la soluzione può essere aggirata disabilitando JS nel browser, ma ciò va oltre l'utente medio – mgnoonan

+0

Grazie. Il problema è che non voglio un avviso. Preferirei che il menu contestuale di Windows non si visualizzasse quando hai ragione- clic e che le funzioni di ctrl di copia e incolla non sono consentite – Susan

Problemi correlati