通过处理函数取消一个按键事件(addEventListener函数)

时间:2011-09-29 14:53:32

标签: javascript dom

我想创建一个改变'。'的测试函数。 charachter在文本框中输入','字符。我不能改变服务器端,因为它是谷歌文档。 '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);

然后问题是','和'。'被添加到该字段中。我该如何取消'。'压制事件?我怎样才能更换'。'通过','按下事件按下事件?

我在互联网上搜索过,并没有找到“addEventListener”函数的解决方案。

2 个答案:

答案 0 :(得分:3)

使用e.preventDefault()应该这样做。

今天jsFiddle表现得很慢,但我终于把演示放在了一起:http://jsfiddle.net/yrYH4/

答案 1 :(得分:0)

可能是因为你从事件处理程序返回true。

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