Chrome和oninput活动

时间:2013-07-23 19:23:18

标签: javascript html google-chrome

我有一个文本框,我正在尝试触发一个oninput事件(下面我的例子只从输入中删除一个逗号,但是我确实需要它来做更高级的事情)。我的代码在Firefox和Internet Explorer上运行得很好,但是当我点击Chrome中的文本框时,我有大约0.5秒的时间开始输入,否则我会失去焦点。在我的网站上测试下面的确切代码会产生错误。有什么想法吗?

<input type="text" id="question" name="question" oninput="clean(this);" />

<script type="text/javascript">
    function clean(q){
        q.value=q.value.replace(",","");
    }
</script>

感谢您的帮助

4 个答案:

答案 0 :(得分:1)

归功于ComFreek和RobH指出它在JS小提琴上运行得很好。我没有先尝试它,我感到非常愚蠢。事实证明,页面上的其他一些Javascript导致触发器中断。谢谢大家的帮助!

答案 1 :(得分:0)

您可以尝试设置计时器以在函数中运行代码。

<input type="text" id="question" name="question" oninput="clean(this);" />

<script type="text/javascript">
    function clean(q){
        window.setTimeout(function(){
            q.value=q.value.replace(",","");
        }, 0);
    }
</script>

答案 2 :(得分:0)

如果你打算做一些复杂的事情,我建议你使用jQuery,因为这会解决这个交叉浏览器的错误。

并使用类似的东西:

$('#input-desired').bind('keyup', function() {
     this.value = this.value.replace(',', '');
});

如果您想购买一个简单的应用程序,可以试试这个。

<input type="input" id="desired" onkeyup="desiredInputChanges(this);" />

在您的Javascript文件中使用类似:

desiredInputChanges = function (input) {
   input.value = input.value.replace(',', '');
}

请注意,不要忘记让一个函数成为你的班级并保护你的方法:)

答案 3 :(得分:0)

尝试使用<input onkeyup="clean(this)">,它只会在输入内容后输入函数。

http://www.w3schools.com/jsref/event_onkeyup.asp