0

我有一个文本框,我正在尝试在输入上触发一个事件(我下面的示例仅从输入中删除了一个逗号,但是我确实需要它来做更多的事情)。我的代码在 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

4 回答 4

1

归功于 ComFreek 和 RobH 指出它在 JS fiddle 上工作得很好。我觉得很愚蠢,因为没有先尝试。事实证明,页面上的其他一些 Javascript 导致触发器中断。感谢大家的帮助!

于 2013-07-23T19:53:23.300 回答
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>
于 2013-07-23T19:29:25.943 回答
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(',', '');
}

请注意,不要忘记将函数作为您的类并保护您的方法:)

于 2013-07-23T19:29:32.857 回答
0

尝试使用<input onkeyup="clean(this)">,它只会在输入输入内容后触发该功能。

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

于 2013-07-23T19:35:58.423 回答