Почему никто не предложил использовать событие OnPaste
?Это полностью поддерживается в IE, Safari и Chrome.
Документы для использования OnPaste в IE
Документы для использования OnPaste в Webkit
В JQuery это будет выглядеть так:
$(input).bind("paste", function(e){ RemoveNonAlphaNumeric(); })
Это покрывает 75% рынка браузеров.
Если вы используете JQuery, OnPaste автоматически нормализуется в Firefox, так чтотам тоже работаетЕсли вы не можете использовать JQuery, есть событие OnInput
, которое работает.
Рабочим решением является использование быстрого значения setTimeout, чтобы можно было заполнить свойство значения ввода.
В основном так:
$("input").bind("paste", function(e){RemoveAlphaChars(this, e);});
function RemoveAlphaChars(txt, e)
{
setTimeout(function()
{
var initVal = $(txt).val();
outputVal = initVal.replace(/[^0-9]/g,"");
if (initVal != outputVal)
$(txt).val(outputVal);
},1);
}
Я проверил это в IE, Chrome и Firefox, и оно работает хорошо.Тайм-аут такой быстрый, что вы даже не видите удаляемых персонажей.