2015-07-23 2 views
0

Я использую виртуальный плагин для клавиатуры http://mottie.github.io/Keyboard/.
Здесь, в mottie textarea, я хочу запустить событие нажатия клавиши, чтобы я мог использовать физическую клавиатуру для ввода текста в пропущенном laguage.Keyup event for textarea

Я пытался что-то вроде этого

$('textarea[name=Notes]').keypress(function (e) {}); 

и как это также

$("div.ui-keyboard-preview-wrapper").find('textarea[name=Notes]').keypress(function (e) {}); 

Я также попытался как этот

$(".ui-keyboard-preview").keypress(function (e) {}); 

Но его не вызывает событие. Есть какой-либо способ сделать это?

+0

Отсутствует соответствующий контекст, о котором идет речь, но вы пробовали делегировать мероприятие? –

+0

Можете ли вы объяснить, что именно вы пытаетесь сделать с этим кодом? Плагин запускает событие ['keyboardChange'] (https://github.com/Mottie/Keyboard/wiki/Methods#events) с каждым изменением, внесенным в input/textarea. Если вы хотите изменить текст, [есть несколько примеров на домашней странице wiki] (https://github.com/Mottie/Keyboard/wiki#manipulating-text). – Mottie

ответ

5

Попробуйте с input событий, как показано ниже. Он будет отслеживать изменения в поле textarea. Для более старой версии IE propertychange событие может использоваться для отслеживания изменений.

Пример фрагмента кода:

$(document).on('input propertychange', "textarea[name='Notes']", function() { 
 
    alert("Text Updated"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
 
<textarea name="Notes" rows="4" cols="50"> 
 
Your text 
 
</textarea>

Примечание:

input событие срабатывает всякий раз, когда содержание текстовой области получения изменилась. Но он не будет содержать информацию о нажатии клавиши event.which. Вместо этого вы можете использовать keypress или keydown или keyup событий отдельно для отслеживания кода ключа.

Но для виртуальной клавиатуры вы могли бы попробовать что-то вроде этого Fiddle

Надеется, что это поможет вам!

+0

Спасибо, Джон. Теперь ключевое событие запускается. Но возникает другая проблема. ** e.which ** и какое-то другое свойство приходит как неопределенное. Здесь В моей программе я также проверяю, нажал ли пользователь специальный ключ, например shift и ctrl. и эти свойства также наступают ** неопределенными **. Как его решить? – Bhola

+0

@Bhola Пожалуйста, проверьте это. http://stackoverflow.com/questions/17384218/jquery-input-event Жалость на предыдущий комментарий, который я опубликовал без тестирования. Надеюсь, вы поняли концепцию сейчас. –

+0

Еще раз спасибо. Я получил эту идею из этой ссылки, и, наконец, я придумал ** $ (document) .on ('keypress', "textarea [name = 'Notes']", function (e) {}); **. А также первый раз, когда я узнаю о ** вводе ** события. +1 с моей стороны. Спасибо – Bhola