2014-02-12 3 views
4

Я создал пользовательскую функцию JS, которая использует клавиатуру для работы со строками таблицы. Фактически, я использую клавиши вверх/вниз для выбора строки (подробности предварительного просмотра) и Enter для имитации двойного щелчка (редактировать данные).JQuery ON selector не работает

Это работает очень хорошо, вы можете посмотреть рабочий пример на http://jsfiddle.net/n6hn2/19/ Просто сконцентрируйтесь на стол и попытаться Up/Down/Enter и увидеть консоль ..

  1. Почему это не работает с переключателем, как этот

    $('#' + tableid).on('keyup', 'tbody', function(e) {... 
    

    также пытался 'TBODY тр' как селектор, и $('#' + tableid + ' tbody tr'), но ничего.

  2. Когда я ввожу что-то в поле ввода (search_article) и HIT Enter, запускается моя функция DblClick. Что на самом деле нормально без селектора, но я этого не хочу.

+0

TBODY не может быть сфокусирован, поэтому KeyUp событие не уволили. См. Настройку атрибута tabindex на tbody: http://jsfiddle.net/n6hn2/21/ –

+0

извините, забудьте указать, что вам следует приложить внимание к телу, а не таблице: http://jsfiddle.net/n6hn2/26/ (или в предыдущем jsfiddle, нажмите на tbody, чтобы дать ему фокус). Вы можете захотеть удалить сфокусированный стиль контуров, используя, например: '#tableid: focus {outline: none;}' http://jsfiddle.net/n6hn2/28/ –

+0

Это Правильный ответ. Как я могу голосовать и задавать ответ? – MiTja

ответ

1

По умолчанию, tbody элемент не настраивается, вам нужно установить любой атрибут tabindex на tbody, например:

tabindex="-1" 

Полный текст DEMO с помощью CSS контур тоже:

#tableid :focus {outline:none;} 

Итак, вы можете использовать KeyUp обработчик на TBODY:

$('#' + tableid).on('keyup', 'tbody', function(e) {...}); 
0
  1. вам нужно добавить TabIndex = "0" добавить класс или идентификатор

так:

<table id="tableid" tabindex="0"> 

и

$("#tableid").on('keyup', function(){ 
    console.log("2"); 
}); 

проверить: http://jsfiddle.net/mehmetakifalp/n6hn2/25/

+0

Уже есть это в моем примере. Bu tyou были близки, это проблема с tabindex – MiTja

0

Я раздвоенный код и эта скрипка, кажется, работает нормально: http://jsfiddle.net/5mxS2/

Самая большая разница в том, что on в настоящее время присоединяется к input, как это:

$('#' + tableid + ' input').on('keyup', function(e) { 
    alert('up'); 
}); 
+0

Это обходное решение ... – MiTja

+0

Извините, я просто проверил ваш пример снова. Это не то, что я хочу. Я хочу сохранить свои функции для ввода/вывода/ввода, но для TBODY, а не для TABLE. Для другой части thead/input или иначе я напишу еще одну функцию. Спасибо, в любом случае – MiTja

Смежные вопросы