我需要在文本输入中更改字符’.’输入时”,’
在IE中,我更改了keypress事件中的keyCode事件属性,就像这样 @H_404_3@document.getElementById('mytext').onkeypress = function (evt) { var e = evt || window.event; if (e.keyCode && e.keyCode==46) e.keyCode = 44; else if (e.which && e.which==46) { e.which = 44; } };
在IE中,我更改了keypress事件中的keyCode事件属性,就像这样 @H_404_3@document.getElementById('mytext').onkeypress = function (evt) { var e = evt || window.event; if (e.keyCode && e.keyCode==46) e.keyCode = 44; else if (e.which && e.which==46) { e.which = 44; } };
但它表明,在Firefox中,不可能更改键事件中键入的字符.
有什么建议?
解决方法
试试这个.它适用于所有浏览器:
@H_404_3@window.onload = function () {
var input = document.getElementById("mytext");
input.onkeypress = function () {
var evt = arguments[0] || event;
var char = String.fromCharCode(evt.which || evt.keyCode);
// Is it a period?
if (char == ".") {
// Replace it with a comma
input.value += ",";
// Cancel the original event
evt.cancelBubble = true;
return false;
}
}
};
更新:Pier Luigi指出了上述问题.它没有照顾插入位置不在文本的末尾.即使您正在向值中插入一些文本,它也会将命令附加到结尾.
解决方案是,而不是附加逗号,以模拟逗号键的按键事件.不幸的是,在不同的浏览器中调度合成事件的方式似乎表现出很多种类,并不是一件容易的事.我会看看我是否能找到一个漂亮而通用的方法.