使用jQuery更改Enter键?

时间:2009-05-27 19:15:13

标签: jquery

我在页面上使用多个框架集,每个框架集都有一个相关的按钮来执行服务器/客户端回发。我想更改默认的回车键以选择正确的按钮,这是我使用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 个答案:

答案 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(.........