2

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

// 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 还是我的实现中的错误。

编辑:对不起,我一开始还不够清楚 - 这是我试图动态更新输入大小的部分,它被破坏了。我的错。感谢到目前为止的反馈,那里有一些非常有用的链接。

4

4 回答 4

3

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

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

于 2009-04-28T02:33:28.617 回答
1

根据 jQuery 文档keydown()

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

您是否检查了引用的页面以查看 Safari/Chrome/Webkit 是否具有不同的 Enter 键值?

于 2009-04-27T17:38:46.373 回答
1

问题似乎在于设置 size 属性。这一行:

$(this).attr("size",size);
于 2009-04-27T17:57:19.590 回答
1

Safari 和 Chrome 不尊重某些属性。但是您可以通过 css 元素设置它。效果很好。

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

例如,我注意到在输入onclick时onClick属性在 Chrome 中不起作用。

于 2010-01-08T13:38:01.517 回答