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

Safari和Chrome:动态编辑输入“size”属性时出现问题

  •  2
  • roborourke  · 技术社区  · 17 年前

    我有以下代码位来创建自动调整大小的文本输入:

    // setup quick jump input
    $("#goto").keydown(function(e){
      var size = $(this).val().length;
    
      // sanity
      if ( size < 1 ) {
        size = 1;
      }
    
      $(this).attr("size",size);
    
      // if enter then GOTO->
      if ( e.keyCode == 13 ) {
        window.location.href = "/" + $(this).val();
      }
    });
    

    HTML:

    <input type="text" id="goto" size="1" name="goto" />
    

    问题: 调整输入大小在Safari或Chrome中不起作用,只有Firefox和Opera。我正在使用jquery 1.3.2,想知道它是jquery中的一个bug还是我的实现。

    编辑:很抱歉,一开始我还不够清楚-是我试图动态更新输入大小的部分坏了。我的错。谢谢你到目前为止的反馈,一些非常有用的链接。

    4 回复  |  直到 11 年前
        1
  •  3
  •   Chad Grant    17 年前

    我怀疑size属性是否可以跨浏览器工作。我将切换到设置输入字段的maxlength和css width,而不是更改size属性。

    看起来像是webkit中的一个bug/不支持的功能。哪个Safari/Chrome共享。

        2
  •  1
  •   matt b    17 年前

    根据jquery文档 keydown() :

    // Different browsers provide different codes
    // see here for details: http://unixpapa.com/js/key.html    
    // ...
    

    你检查过了吗 the page referenced 要查看safari/chrome/webkit的enter键是否有不同的值?

        3
  •  1
  •   Matt    17 年前

    问题似乎在于设置大小属性。这条线:

    $(this).attr("size",size);
    
        4
  •  1
  •   Andreas Louv    11 年前

    Safari和Chrome都不尊重某些特性。但是你可以通过css元素来设置它。工作良好。

    $(this).css("width","4em");
    

    例如,我注意到 点击 点击 键入。