我正在尝试在用户输入信息时验证表格单元格中的数据。表中的每个单元格都有不同的验证方法。我有一个包含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”事件,所以加载速度很慢。还有其他办法吗?
谢谢, 斯里达尔。
答案 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作为正确的响应,因为它基于。