Я проверил это на Galaxy SIII и Android браузер не кажется отправить paste
событие. Тем не менее, он по-прежнему отправляет событие input
после того, как что-то было вставлено.
Если пользователь вводит поле, он будет запускать одно событие input
для каждой буквы. Однако, если он вставляет, событие input
будет срабатывать только один раз для всей вложенной строки. На основании этого наблюдения мы можем блокировать склеивание, как это:
$('#ie').bind("input", function() {
var previousValue = $(this).data('old_value') || '',
newValue = $(this).val();
if((newValue.length - previousValue.length) > 1) {
$(this).val(previousValue);
}
$(this).data('old_value', $(this).val());
});
Вы найдете JSFiddle here.
Обратите внимание, что это также блокирует автозаполнение и все другие странные методы ввода, которые работают аналогичным образом (я не знаю ни о каком).
Я знаю, что это не связано с вопросом, но почему отключить вставку? –
Ну, поля ввода, такие как подтверждение по электронной почте, подтверждение пароля, не должны вставляться. – CalebC
Я не уверен, что согласен с этим. Некоторая пища для размышлений: [Предотвращение вставки пользователем из буфера обмена в обязательное поле формы] (http://ux.stackexchange.com/q/21062/4487), [Должен ли я позволить пользователю копировать/вставлять в подтверждение поле электронной почты для регистрационной формы?] (http://ux.stackexchange.com/q/1488/4487) –