2009-04-27 6 views
2

に入力「サイズ」属性を編集問題、私は自動的にリサイズ、テキスト入力を作成するために、次のコードビットを持っている:Safariとクローム:フライ

// 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か実装のバグかどうかを知りたいです。

EDIT:申し訳ありませんが、最初は十分にはっきりしていませんでした。これは、入力のサイズを瞬時に更新しようとしている部分です。私の悪い。これまでのフィードバック、いくつかの非常に便利なリンクをありがとう。 keydown()上のjQueryのドキュメントによると

答えて

3

私は、サイズ属性がクロスブラウザで動作するのではないかと疑います。サイズの属性を変更するのではなく、入力フィールドのmaxlengthとcssの幅を設定することに変わりました。

Webkitのバグ/未サポート機能のようです。どのSafari/Chromeが共有しますか。

+0

ありがとう - 私はCSSを使用するとは思わなかった! – roborourke

1

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

あなたはサファリ/クローム/ Webkitのは、Enterキーで異なる値を持っているかどうかを確認するためにthe page referencedを確認しましたか?

+1

http://www.quirksmode.org/js/keys.htmlをチェックする価値があるかもしれません。ブラウザのキーイベントの違いと欠点について説明します。私のリンクによると、Enterはすべてのブラウザでキーコード13として動作するはずです。 –

1

問題は、サイズ属性の設定にあるようです。この行:

$(this).attr("size",size); 
+0

サイズが文字列であることを確認しようとしましたが、その行に何が問題なのかわかりません。文法は正しいです...私は、問題ブラウザが入力属性などを「保護」していると思います。最も怒っている。 – roborourke

+0

ええ私は、文字列と数字、多くの異なる方法でプロパティを直接設定しようとしました。それは何があっても揺れません。 – Matt

1

SafariもChromeも一部の属性を尊重していません。しかし、css要素で設定することができます。良い仕事。例えば

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

、私はonclickのが入力されたときにのonClick属性がChromeで動作しないことに気づきました。

関連する問題