代码之家  ›  专栏  ›  技术社区  ›  Zachary

使用jQuery更改Enter键?

  •  0
  • Zachary  · 技术社区  · 17 年前

        $("#<%= 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 回复  |  直到 17 年前
        1
  •  1
  •   Clyde    17 年前

    由于你的前两行非常相似,我将其简化为:

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

    如果页面上除了你关心的两个框架集之外没有其他框架集,这应该没问题。那么,您不需要拥有ClientID。

    如果你不能保证页面上只有这两个,那么我认为你确实需要runat=server和ClientID——因为你确实需要唯一标识这两个特定的帧集

    EDIT:或者,您可以用特定的类标记要显示此行为的字段集:

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

    然后,您可以使用类选择器将行为全部添加到一起:

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