2017-02-20 5 views
3

Есть ли любые события, которые вызывают на form элементах, когда пользователь вводит вход через панель MacBook Touch?События ввода формы для сенсорной панели Macbook

Вот такой trivial example:

<textarea id="textarea"></textarea> 

(function($) { 
    $('#textarea') 
    .on('keyup', function() { 
     console.log('keyup'); 
    }) 
    .on('keydown', function() { 
     console.log('keydown'); 
    }) 
    .on('keypress', function() { 
     console.log('keypress') 
    }); 
})(jQuery); 

На сафари, когда я «типа», используя панель касания (например, нажав на смайликов или autosuggested текста), я не вижу каких-либо события в сети контрольная консоль. Однако обычная клавиатура будет запускать события keydown, keypress и keyup, как и ожидалось.

+1

Вы пробовали ' 'input'' событие? –

ответ

2

Это не похоже, что сенсорная панель запускает ключевые события.

Альтернативой является прослушивание input event.

Как указано в соответствующем MDN documentation, событие вызывается при изменении значения, что означает, что он будет работать, когда сенсорный бар изменяет значение input/textarea.

Входное событие DOM вызывается синхронно, когда значение элемента <input> или <textarea> изменяется.

Использование:

document.querySelector('textarea').addEventListener('input', function (event) { 
    // ... 
}); 

или ...

$('textarea').on('input', function (event) { 
    // ... 
}); 
Смежные вопросы