2015-09-25 141 views
1

我有一个允许用户键入简短(50个字符)的注释的弹出框。我需要做的是弄清楚如何防止用户使用鼠标右键单击复制/粘贴笔记。在asp.net上捕获鼠标文本框

我抬起头来看所有的​​为一个文本框,onkeyup和onkeydown不在此列表中,但它们确实有效果。

我有以下的JavaScript捕捉按键:

<!--//********************************** 
    // Comment Character Count 
    //********************************** --> 
<script type="text/javascript"> 
    function textCounter(field, countfield, maxlimit) { 
    if (field.value.length > maxlimit) 
     field.value = field.value.substring(0, maxlimit); 
    else 
     countfield.value = maxlimit - field.value.length; 
    } 
</script> 

,然后将此文本框这就要求当一个键被按下上面的功能:

<asp:TextBox ID="txtCommentBox" TextMode="MultiLine" CssClass="textbox" Wrap="True" 
Height="70px" Width="270px" Font-Size="Small" Rows="3" runat="server" 
onkeyup="textCounter(this, this.form.remLen, 50);" 
onkeydown="textCounter(this, this.form.remLen, 50);" /> 

一切工作真棒,除了当一个人的权利点击并选择“粘贴”,它会绕过检查,因为没有按键。任何想法如何陷阱?有没有无证的onmouseclick事件我可以打电话或什么?

+0

IIRC,我认为可能会有'onpaste'事件。此外,一个'onchange'事件可能会有用。我只是从记忆中工作,所以我可能会误会... –

+0

请参阅:http://stackoverflow.com/questions/737022/how-do-i-disable-right-click-on-my-web-页面 –

回答

1

首先,onpaste事件添加到您的文本框:

<asp:TextBox ID="txtCommentBox" TextMode="MultiLine" CssClass="textbox" Wrap="True" 
Height="70px" Width="270px" Font-Size="Small" Rows="3" runat="server" 
onkeyup="textCounter(this, this.form.remLen, 50);" 
onkeydown="textCounter(this, this.form.remLen, 50);" 
onpaste="textCounter(this, this.form.remLen, 50);" /> 

接下来,适应Fabrício Matté's解决方案来处理onpaste射击和value之间的时间差被填充:

function textCounter(field, countfield, maxlimit) { 
    setTimeout(function() { 
     if (field.value.length > maxlimit) 
      field.value = field.value.substring(0, maxlimit); 
     else 
      countfield.value = maxlimit - field.value.length; 

    }, 0); 
} 
+0

完美适用于所有潜在的使用和滥用。谢谢! –

1

使用TextBox.MaxLength财产。即使粘贴文本,它也会阻止添加其他字符。您还可以添加asp.net自定义验证器,以确保用户在浏览器编辑器中没有更改您的html。

<asp:TextBox ID="txtCommentBox" TextMode="MultiLine" CssClass="textbox" Wrap="True" 
Height="70px" Width="270px" Font-Size="Small" Rows="3" runat="server" MaxLength="50"/>