首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >防止复制/粘贴,右键单击文本框(电子邮件地址)

防止复制/粘贴,右键单击文本框(电子邮件地址)
EN

Stack Overflow用户
提问于 2012-03-15 17:14:34
回答 2查看 4.6K关注 0票数 7

我想阻止用户:

从第一个文本框复制和粘贴到second

  • Right-click,并使用上下文菜单将第一个文本框复制和粘贴到第二个.

这不管用。

代码语言:javascript
运行
复制
<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>

开始工作了!

代码语言:javascript
运行
复制
<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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-15 19:35:35

代码语言:javascript
运行
复制
<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>
票数 3
EN

Stack Overflow用户

发布于 2012-03-15 17:22:19

当使用jQuery时,这是相当简单的,并且与ASP.NET完全兼容:

代码语言:javascript
运行
复制
<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

正如Scott指出的:在生产中,您应该将jQuery引用放在html的底部(仍然在body标记中)。

更新

由于您要求完全阻止上下文菜单,所以您可以这样做:

添加以下脚本:

代码语言:javascript
运行
复制
<script type="text/javascript">
    document.getElementById('TextBox2').oncontextmenu = function (){
        return false;
    };
</script>

返回false时未显示菜单项。以下是对此的浏览器支持概述:

http://help.dottoro.com/ljhwjsss.php

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9724780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档