2009-05-27 76 views
0

我在页面上使用多重框架集,每个框架集都有一个关联的按钮来执行服务器/客户端回发。我想改变默认的回车键来选择正确的按钮,这是我使用jQuery的soltuion。使用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中。这使代码重新使用少一点,所以我很好奇,如果别人有更好的主意......

感谢您的意见!

回答

1

因为你的前两行是如此的相似我将其降低到:

$('FIELDSET').find(":input").click(function() { 
    $(this).parents("FIELDSET").addClass("default"); }).blur(function() { 
    $(this).parents("FIELDSET").removeClass("default"); }); 

如果没有比你关心的两个页面上的任何其他框架集,这应该是罚款。那么你不需要拥有ClientID。

如果不能保证这些是仅有的两个在页面上,那么我认为你需要的RUNAT =服务器和客户端ID - 因为你实际上需要做的唯一识别那些特定的两个框架集

编辑:或者,您可以标记出你想要有出现此行为与特定的字段集类:

<fieldset class='UseAutoEnterKey'> .... 

然后你就可以添加都在一个与类选择的行为:

$('FIELDSET.UseAutoEnterKey').find(......... 
+0

我喜欢类的想法,因为代码在一个小部件中使用,我不能保证页面上不会有其他FRAMESETS。谢谢! – Zachary 2009-05-27 19:59:34

+0

对于奖励积分,这将是学习创建jquery插件的一个很好的实验。这将是一个很好的简单插件,这样页面上的代码就会是:$('select my fieldsets')。UseAutoEnterKey(); – Clyde 2009-05-27 20:05:12

+0

我会给它一个机会,这将是一个很好的excerise ...我会在这里发布我的结果... Zach – Zachary 2009-05-30 03:47:57