我在页面上使用多个框架集,每个框架集都有一个相关的按钮来执行服务器/客户端回发。我想更改默认的回车键以选择正确的按钮,这是我使用jQuery的解决方案。
$("#<%= SearchCustomers.ClientID %>").find(":input").click(function() { $(this).parents("FIELDSET").addClass("default"); }).blur(function() { $(this).parents("FIELDSET").removeClass("default"); });
$("#<%= SearchGroups.ClientID %>").find(":input").click(function() { $(this).parents("FIELDSET").addClass("default"); }).blur(function() { $(this).parents("FIELDSET").removeClass("default"); });
$(document).keypress(function(e) {
if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
$(".default").find(":submit,:button").click();
return false;
}
});
这是完美的,但我一直在寻找改进方法。现在,代码依赖于我将框架集设置为“runat = server”,因此我可以访问“ClientID”属性并将ID注入我的javascript。这使代码的可重用性降低一点,所以我很好奇其他人是否有更好的想法...
感谢您的评论!
答案 0 :(得分:1)
由于您的前两行非常相似,我将其缩减为:
$('FIELDSET').find(":input").click(function() {
$(this).parents("FIELDSET").addClass("default"); }).blur(function() {
$(this).parents("FIELDSET").removeClass("default"); });
如果页面上没有任何其他框架集而不是您关心的两个框架集,那么这应该没问题。然后您不需要拥有ClientID。
如果你不能保证那些是页面上唯一的两个,那么我认为你确实需要runat = server和ClientID - 因为你确实需要唯一地识别那些特定的两个框架集
编辑:或者,您可以使用特定类标记要表现出此行为的字段集:
<fieldset class='UseAutoEnterKey'> ....
然后,您可以使用类选择器将所有行为添加到一起:
$('FIELDSET.UseAutoEnterKey').find(.........