CRTL和x2B;JavaScript asp.net中的V(粘贴)函数自动格式化

CRTL和x2B;JavaScript asp.net中的V(粘贴)函数自动格式化,javascript,asp.net,Javascript,Asp.net,在我当前的项目中,我有一个文本框,用户将在其中输入一些数字ID(如产品ID)——例如:12345-123-1234567-12345 我希望在我的aspx页面中有一个JavaScript,当用户按下Ctrl+V以粘贴文本时,它将格式化该文本,而不考虑文本的当前格式 例如,如果文本的格式为12345---123-12345671345,则函数将其格式设置为12345-123-1234567-12345 编辑: 我试过你的建议,但没用。我试着这样做。。。下面是代码示例 <asp:TextBox

在我当前的项目中,我有一个文本框,用户将在其中输入一些数字ID(如产品ID)——例如:
12345-123-1234567-12345

我希望在我的aspx页面中有一个JavaScript,当用户按下Ctrl+V以粘贴文本时,它将格式化该文本,而不考虑文本的当前格式

例如,如果文本的格式为
12345---123-12345671345
,则函数将其格式设置为
12345-123-1234567-12345

编辑:

我试过你的建议,但没用。我试着这样做。。。下面是代码示例

<asp:TextBox ID="TextBox1" runat="server"  Text="" ></asp:TextBox>
<br />
<br />

<script language="JavaScript" type="text/javascript">

    var tb = document.getElementById("TextBox1");
    tb.OnTextChanged = function () {

        this.value = this.value.replace("---", "-");
    }; 

</script>



var tb=document.getElementById(“TextBox1”); tb.OnTextChanged=函数(){ this.value=this.value.replace(“-”,“-”); };
这是错误的说法

Microsoft JScript运行时错误:无法设置属性的值 “OnTextChanged”:对象为null或未定义


要在文本框的文本发生更改时更新文本框,可以使用“onchange”事件(只需注意,在焦点离开文本框之前不会发生更改)

首先,为您的文本框提供一个唯一的id-asp.net版本4具有一些功能,允许您提供不会“弄乱”的表单元素id,然后设置onchange事件

var tb = document.getElementById("textBoxId");
tb.onchange = function() {
   //I think you want:
   this.value = this.value.replace("---", "-");
};

编辑

您可以捕获
keyup
事件,并检查用户是否刚刚点击了control-v。如果是,您可以修改文本框的当前值。请注意,如果用户通过右键单击进行粘贴,则这将不起作用

处理此问题的最佳方法是使用onchange事件,无论文本框如何更改,该事件都将起作用

   document.getElementById("tb").onkeyup = function (e) {
       var key = e.which || e.keyCode;
       if (e.which === 86 && e.ctrlKey)
           alert("you pasted " + this.value);
   }; 

快速正则表达式可以处理这个问题,“[^(0-9)]”。将它们全部替换为“”。如果您需要中间的破折号,您可以迭代并在后面添加破折号。替换/添加破折号没什么大不了的。。。我只是想知道如何在javascript中捕获CRTL+V。如前所述,我对JS很陌生。。。不太确定。你能发一个edxample吗。。。。如果你有。亚当:我会试试看,你能不能再次添加你用编辑删除的文本。。。我有了一些想法:)@Rahul-删除的文本没有多大价值。我只是将this.value设置为一些局部变量,这是毫无意义的。谢谢Adam,但是我在另一个JS函数中调用这个函数的位置呢?您可能希望在window.onload事件中设置这个处理程序,或者您可以将此代码放在正文末尾的脚本部分谢谢您的响应。。。我试过了,但弄错了。请看我的编辑。