CRTL + V(粘贴)功能在JavaScript asp.net中自动格式化

时间:2012-01-23 22:30:41

标签: javascript asp.net

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

我希望在我的aspx页面中有一个JavaScript,当用户按 Ctrl + V 粘贴文本时,将格式化该文本,而不管文本是否存在格式。

例如,如果文字格式为12345---123-123456712345,则该函数会将其格式化为12345-123-1234567-12345

修改

尝试了你的Suggetion但它没有用。我试过这样的方式......下面的代码示例

<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>

错误地说

  

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

1 个答案:

答案 0 :(得分:2)

要在文本更改时更新文本框,您可以使用“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);
   }; 

DEMO