Javascript 通过处理程序函数(addEventListener函数)取消按键事件

Javascript 通过处理程序函数(addEventListener函数)取消按键事件,javascript,dom,Javascript,Dom,我想创建一个测试函数,将文本框中的“.”字符改为“.”字符。我无法更改服务器端,因为它是谷歌文档“56.3”被认为是一个数字,但“56,3”是(!) 假设我使用了以下代码: function changeValue(e) { e = window.event || e; var keyCode = e.charCode || e.keyCode; if (String.fromCharCode(keyCode)==='.') { event.targe

我想创建一个测试函数,将文本框中的“.”字符改为“.”字符。我无法更改服务器端,因为它是谷歌文档“56.3”被认为是一个数字,但“56,3”是(!)

假设我使用了以下代码:

function changeValue(e) {
    e = window.event || e;
    var keyCode = e.charCode || e.keyCode;
    if (String.fromCharCode(keyCode)==='.') {
          event.target.value+=",";
          return false;
    }
    return true;
}

function start_up () {
    console.log('Start');
    var tmp = document.getElementById('ss-form');
    tmp = tmp.getElementsByTagName('input');
    console.log(tmp);
    for(var i=0; i<tmp.length; i++) {
            tmp[i].addEventListener('keypress',changeValue, false); 
            console.log(i, tmp[i]);
    }
};

window.addEventListener("load",start_up, false);
函数更改值(e){
e=window.event | | e;
var-keyCode=e.charCode | | e.keyCode;
if(String.fromCharCode(keyCode)=='。){
event.target.value+=“,”;
返回false;
}
返回true;
}
功能启动(){
console.log('Start');
var tmp=document.getElementById('ss-form');
tmp=tmp.getElementsByTagName('input');
控制台日志(tmp);

对于(var i=0;i使用
e.preventDefault()
应该这样做


我得到了一个JSFIDLE演示:

这可能是因为您正在从事件处理程序返回true


您可以使用
event.preventDefault
return false
来防止执行默认操作-您从处理程序的内部if语句返回false,然后从主函数返回true。

在if语句内部调用
return
会使您脱离函数,而不仅仅是脱离if语句泰门特。