表单事件不兼容浏览器,如何解决?

时间:2012-04-22 16:05:00

标签: javascript javascript-events

我在html页面上有一个textarea,在谷歌浏览器上,我不知道是什么版本,因为用户界面被隐藏了,但在chrome上onChange =“code”事件没有触发但是在Firefox 11.0上1.0(根据帮助 - >关于)它正在开火。然后我开始玩onkeydown =“same_function()”,onpaste =“same_function()”和oninput =“same_function()”事件,以便绝对确保捕获至少一个事件。但现在问题是我收到的事件太多了,当我在获取keydown事件后检查textarea的textarea_dom_object.value时,按下的键不包含在我正在阅读的值中;如果我在文本字段中有“abc”并按下“d”,则会生成一个按键,但我仍然只能获得“abc”,而不是“abcd”。

是否有兼容的方式,或者至少是一种适用于大多数浏览器的方式,每次textarea更改时都会获得一个事件,但最好只有一个事件?如果我必须首先测试我是否已经听过一个事件,我不喜欢那种难以编写的代码。每当textarea中的文本发生变化时,我想要的只是一个事件。

2 个答案:

答案 0 :(得分:1)

这就是为什么jQuery如此惊人。它理解在不支持更新功能的浏览器之间优雅降级代码的必要性。 JavaScript本身并不提供此支持独立。通过增强JavaScript在使用jQuery方面的核心功能,您通常在跨浏览器支持方面会更加成功。

有人说......

仍然有很多场景需要确定您正在使用的设备/浏览器,以便您可以执行预期的操作。

最重要的是要记住,现在没有100%的交叉支持库。

答案 1 :(得分:1)

你可以这样做。只要确保你给textarea一个id标签

$(document).ready(function(){
        $('.addtitle').keyup(function(event) {
            if(event.keyCode==13) { 

}
});
});

在我的情况下,我在输入键上启动了这个功能(比如facebooks功能)。

编辑:如果你在页面上有多个textarea,你应该这样做:

$(document).ready(function(){
        $('textarea[name=mynamevalue]').keyup(function(event) {
            if(event.keyCode==13) { 

}
});
});