Вы пробовали событие onchange
? Я не уверен, что он запускается для автоматического завершения выбора, но вы также можете попробовать событие onpropertychange
и проверить свойство value:
textInput.onpropertychange = function ()
{
if (event.propertyName == "value")
doCalculation();
}
Это также будет работать при щелчке правой кнопкой мыши -> вставить или щелкнуть правой кнопкой мыши -> вырезать, что не приведет к запуску вашего расчета с использованием текущего метода.
EDIT
Похоже, вам, возможно, придется использовать комбинацию событий и таймеров. Установите интервал на фокус редактирования и очистите его на размытие. Я также использовал бы onpropertychange для IE, чтобы сделать его более эффективным, и сохранить событие keyup, чтобы сделать его также довольно быстрым.
//- If it's IE, use the more efficient onpropertychange event
if (window.navigator.appName == "Microsoft Internet Explorer")
{
textInput.onpropertychange = function ()
{
if (event.propertyName == "value")
doCalculation();
}
}
else
{
var valueCheck, lastValue = "";
textInput.onkeyup = function ()
{
doCalculation();
}
textInput.onfocus = function ()
{
valueCheck = window.setInterval(function ()
{
// Check the previous value against (and set to) the new value
if (lastValue != (lastValue = textInput.value))
doCalculation();
}, 100);
}
textInput.onblur = function ()
{
window.clearInterval(valueCheck);
}
}
Если ваша процедура расчета крошечная (как простое математическое уравнение), я бы просто пропустил предыдущую проверку значений и выполнял вычисления каждые 100 мс.