CRTL和x2B;JavaScript asp.net中的V(粘贴)函数自动格式化
在我当前的项目中,我有一个文本框,用户将在其中输入一些数字ID(如产品ID)——例如: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
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事件中设置这个处理程序,或者您可以将此代码放在正文末尾的脚本部分谢谢您的响应。。。我试过了,但弄错了。请看我的编辑。