определение событий для проверки данных в ячейках таблицы jquery - PullRequest
1 голос
/ 04 октября 2009

Я пытаюсь проверить данные в ячейке таблицы, когда пользователь вводит информацию. Каждая ячейка в таблице будет иметь разные методы проверки. У меня есть таблица с 15 ячейками и 100 строками. некоторые ячейки будут скрыты в зависимости от настроек. поэтому я не могу использовать cellIndex для определения событий. поэтому, чтобы определить правила проверки для каждой ячейки, это то, что я сделал

jQuery(function ($) {
$('table#<%= MyTable.ClientID %> tr td input[type=text]').filter('input[id*=tCell1]')
                    .bind('blur', validateCell1);    
$('table#<%= MyTable.ClientID %> tr td input[type=text]').filter('input[id*=tCell2]')
                    .bind('blur', ValidateCell2);     
$('table#<%= MyTable.ClientID %> tr td input[type=text]').filter('input[id*=tCell3]')
                    .bind('blur', ValidateCell3);         
$('table#<%= MyTable.ClientID %> tr td input[type=text]').filter('input[id*=tCell4],input[id*=tCell5]')
                    .bind('blur', ValidateCell4and5); 
});

так как я прикрепляю событие onblur к каждой ячейке, загрузка идет медленно Есть ли другой способ для этого?

Спасибо, Шридхар.

Ответы [ 2 ]

1 голос
/ 04 октября 2009

Вместо использования избыточных фильтров подстановочных знаков (например, input[id*=tCell1]), которые, как правило, замедляют процесс, попробуйте выбрать элементы более напрямую. Если вы заранее знаете расположение элементов, это не должно быть проблемой. Например:

$("table tr").each(function() {
    $(this).find("td:eq(0) input[type=text]").bind('blur', validateCell1);
    $(this).find("td:eq(1) input[type=text]").bind('blur', validateCell2);
    $(this).find("td:eq(3) input[type=text]").bind('blur', validateCell3);
    $(this).find("td:eq(4) input[type=text]").bind('blur', ValidateCell4and5);
    $(this).find("td:eq(5) input[type=text]").bind('blur', ValidateCell4and5);
});

Кроме того, я не думаю, что есть необходимость использовать filter. Достаточно хорошо продуманного селектора.

0 голосов
/ 04 октября 2009

вы можете попробовать с классами:

$(".classMyTable tbody tr").each(function() {
    $(".classMyInput_1", $(this)).bind('blur', validateCell1);
    $(".classMyInput_2", $(this)).bind('blur', validateCell2);
    $(".classMyInput_3", $(this)).bind('blur', validateCell3);
    $(".classMyInput_4, .classMyInput_5", $(this)).bind('blur', ValidateCell4and5);
});

если это решение вам подходит, вы должны принять за правильный ответ @ karim79, поскольку оно основано на.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...