2009-04-27 7 views
2

Ich habe das folgende Stück Code eine automatisch angepasst Texteingabe zu erstellen:Safari und Chrome: Problem Bearbeitung Eingabe 'size' Attribut on the fly

// 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" /> 

Problem : Die Größenänderung der Eingabe funktioniert nicht in Safari oder Chrome, nur Firefox und Opera. Ich benutze jquery 1.3.2 und möchte wissen, ob es ein Bug in jQuery oder meiner Implementierung ist.

EDIT: Entschuldigung, ich war zunächst nicht klar genug - es ist der Teil, wo ich versuche, die Größe der Eingabe im laufenden Betrieb zu aktualisieren, die gebrochen ist. Mein Fehler. Danke für die Rückmeldung, einige sehr nützliche Links dort.

Antwort

3

Ich bezweifle, dass das Größenattribut Cross-Browser funktionieren würde. Ich würde zum Einstellen der maxlength und CSS-Breite des Eingabefeldes wechseln, anstatt das Größenattribut zu ändern.

Sieht aus wie ein Fehler/eine nicht unterstützte Funktion in Webkit. Welche Safari/Chrome-Freigabe?

+0

Danke - Ich dachte nicht, nur CSS zu verwenden! – roborourke

1

Nach der jQuery-Dokumentation auf keydown():

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

Haben Sie the page referenced wenn Safari/Chrome/Webkit unterschiedliche Werte für die Enter-Taste, um zu sehen überprüft?

+1

Es lohnt sich vielleicht, http://www.quirksmode.org/js/keys.html zu überprüfen. Sie erklären die Unterschiede und Unzulänglichkeiten von Schlüsselereignissen in den Browsern. Die Eingabe sollte in allen Browsern gemäß meinem Link als Schlüsselcode 13 funktionieren. –

1

Das Problem scheint in der Einstellung der Größe Attribut zu liegen. Diese Zeile:

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

Ich habe versucht, sicherzustellen, dass die Größe eine Zeichenfolge ist, aber ich kann nicht herausfinden, was mit dieser Zeile falsch ist. Die Syntax ist richtig ... Ich schätze, die Problembrowser 'schützen' Eingabeattribute oder ähnliches. Am meisten ärgerlich. – roborourke

+0

Ja, ich habe versucht, die Eigenschaft direkt mit einer Zeichenfolge und einer Zahl, viele verschiedene Möglichkeiten. Es bewegt sich nicht, egal was passiert. – Matt

1

Safari und Chrome respektieren einige Attribute nicht. Aber Sie können es über CSS-Element festlegen. Funktioniert gut.

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

Zum Beispiel habe ich bemerkt, dass onClick Attribut nicht in Chrome funktioniert, wenn Onclick eingegeben wird.