我有一个文本框,我正在尝试触发一个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>
感谢您的帮助
答案 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)">
,它只会在输入内容后输入函数。