在我当前的项目中,我有一个文本框,用户将在其中输入一些数字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或未定义
答案 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);
};