На це запитання була потрібна більш актуальна відповідь із джерелами. Це те, що насправді працює (хоча вам не потрібно приймати моє слово за це):
// Storing this jQuery object outside of the event callback
// prevents jQuery from having to search the DOM for it again
// every time an event is fired.
var $myButton = $("#buttonID")
// input :: for all modern browsers [1]
// selectionchange :: for IE9 [2]
// propertychange :: for <IE9 [3]
$('#textareaID').on('input selectionchange propertychange', function() {
// This is the correct way to enable/disabled a button in jQuery [4]
$myButton.prop('disabled', this.value.length === 0)
}
1: https://developer.mozilla.org/en-US/docs/Web/Events/input#Browser_compatibility
2: вхід в IE9 не спрацьовує, коли ми натискаємо BACKSPACE / DEL / do CUT
3: https: // msdn .microsoft.com / en-us / library / ms536956 (v = vs.85) .aspx
4: http://api.jquery.com/prop/#prop-propertyName-function
АЛЕ, для більш глобального рішення, яке можна використовувати протягом усього проекту , я рекомендую використовувати плагін jcuery textchange для отримання нового textchange
події, сумісної між веб-браузерами . Він був розроблений тією ж особою, яка здійснила еквівалентну onChange
подію для Facebook ReactJS, яку вони використовують майже на своєму веб-сайті. І я думаю, що це безпечно сказати, якщо це досить надійне рішення для Facebook, це, ймовірно, достатньо надійне для вас. :-)
ОНОВЛЕННЯ: Якщо вам потрібні такі функції, як підтримка перетягування та перезапускання в Internet Explorer, ви, можливо, захочете перевірити pandell
останні оновлені вилкиjquery-splendid-textchange
.