6

我想检测文本输入何时更改。我尝试了这些,它们在 Firefox 中有效,但在 ie 8 中无效。

$('#taskSearch').bind('input', function() {
     alert($(this).val());
});
$('#taskSearch').live('input', function() {
    alert($(this).val());
});
$('#taskSearch').change(function() {
    alert($(this).val());
});
4

7 回答 7

11

您可以onpropertychange用于 IE6+:

$("#taskSearch").on("propertychange", function(){
alert($(this).val());
});
于 2012-11-28T09:56:54.637 回答
3

以下解决方案适用于我在 IE8 和现代浏览器中通过按键、滚动或 a type="num" 输入字段中的箭头按钮进行的​​更改:

$('#element').on('keyup change', function() {
  // do something
});
于 2014-05-01T18:56:43.283 回答
2

最后一个(并且只有最后一个)是正确的,但是您缺少右括号:

$('#taskSearch').change(function() {
    alert($(this).val());
});

.live()已弃用(并且语法不正确),并且 for 的语法.bind()也不正确;事件的名称是'change',不是'input'。请参阅.change().

于 2012-08-03T08:17:29.473 回答
1

https://github.com/spicyj/jquery-splendid-textchange是一个插件,用于修复在 IE8 和 IE9 中模拟“输入”的怪癖。

作者在他的博文(http://benalpert.com/2013/06/18/a-near-perfect-oninput-shim-for-ie-8-and-9.html)中描述了他是如何实现这个解决方案的,这确实很复杂,如果您想了解详细信息,请阅读。

于 2014-07-14T02:10:34.027 回答
0
$('#taskSearch').change(function() {
    alert($(this).val()); // not the extra brace I've added
});

应该只是工作。PS请停止使用.live()

于 2012-08-03T08:18:04.160 回答
0

在输入值更改时立即触发:

$('#example')on('keyup input', function(e){
    alert(e.type); // Displays 'keyup' in IE8, 'input' in browsers
});

(这是马克答案的变体)

于 2015-03-11T20:53:09.643 回答
0

这将检测在 IE8 中何时按下该键

$("#input").on('keyup', function (event) { alert('keypress'); });

于 2014-07-29T14:21:44.973 回答