Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 捕获鼠标单击asp.net文本框_Javascript_C#_Asp.net_Textbox - Fatal编程技术网

Javascript 捕获鼠标单击asp.net文本框

Javascript 捕获鼠标单击asp.net文本框,javascript,c#,asp.net,textbox,Javascript,C#,Asp.net,Textbox,我有一个弹出框,允许用户键入一个简短(50个字符)的注释。我需要做的是找出如何防止用户使用鼠标右键单击复制/粘贴便笺 我查找了所有的文本框,onkeyup和onkeydown不在这个列表中,但它们确实有效果 我有以下捕获击键的JavaScript: <!--//********************************** // Comment Character Count //********************************** --> &

我有一个弹出框,允许用户键入一个简短(50个字符)的注释。我需要做的是找出如何防止用户使用鼠标右键单击复制/粘贴便笺

我查找了所有的文本框,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>

函数textCounter(字段、countfield、maxlimit){
如果(field.value.length>maxlimit)
field.value=field.value.substring(0,maxlimit);
其他的
countfield.value=maxlimit-field.value.length;
}
然后,此文本框在按键时调用上述函数:

<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事件或其他内容?

使用
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"/>

首先,在文本框中添加一个
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);" />

IIRC,我想可能有一个
onpaste
事件。另外,一个可能有用的
onchange
事件。我只是凭记忆工作,所以我可能弄错了……请看:对所有潜在的使用和滥用都非常有效。谢谢
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);
}