在表格单元格jquery中定义数据验证的事件

时间:2009-10-04 13:47:07

标签: jquery

我正在尝试在用户输入信息时验证表格单元格中的数据。表中的每个单元格都有不同的验证方法。我有一个包含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 个答案:

答案 0 :(得分:1)

尝试更直接地选择元素,而不是使用冗余的通配符属性过滤器(如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。一个经过深思熟虑的选择器就足够了。

答案 1 :(得分:0)

你可以尝试上课:

$(".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作为正确的响应,因为它基于。