2014-06-27 23 views
7

Ich habe ein einfaches Eingabefeld, das eine maxlength = "2" Attribut hat. Der Code sieht wie folgt aus:maxlength Attribut der Eingabe in HTML funktioniert nicht auf HTC One M7

<input id="txtLoginName" maxlength="2"> 

Es funktioniert gut auf den meisten Android-Geräten. Auf dem HTC One M7 funktioniert es jedoch nicht. Auf diesem Gerät kann ich einfach so viele Zeichen eingeben, wie ich möchte.

Irgendwelche Vorschläge? Ich denke, es sollte bisher ein gerätespezifisches Problem sein.

Vielen Dank im Voraus.

Antwort

2

Ich habe dieses Problem bei einigen Projekten bemerkt. Ich denke, bestimmte Versionen von Android haben eine schlechte Unterstützung für maxlength.

Meine Lösung bestand darin, eine jQuery-Keydown-Funktion zu verwenden, die die Anzahl der Zeichen überprüft und verhindert, dass mehr eingegeben wird, wenn das Maximum erreicht wurde.

$('#inputWithMaxLength').keydown(function (e) { 

    var inputLength = jQuery(this).val().length; 

    if(inputLength >= 10) { 
     e.preventDefault(); 
     return false; 
    } 
} 

Ich bin sicher, dass Sie dies ändern könnten, so dass es für jede Eingabe mit Attributen von maxlength gesucht und erstellt ein jQuery-Backup on the fly. Ich bin mir nicht sicher, ob das eher langsam wäre.

+0

Ja, ich weiß, dass jQuery mit diesem Problem helfen kann. Ich habe jedoch ein anderes Problem gesehen: zum Beispiel gebe ich ein Zeichen ein, sagen wir "f", die Vorhersage wird Wörter wie Freund, Feuer, Film usw. vorschlagen. Wenn ich ein vorgeschlagenes Wort auswähle, erlaubt das Textfeld mehr als 2 Zeichen und ab jetzt kann ich immer noch ein Zeichen eingeben. –

+0

Sie könnten die Eingabe geben oder das Attribut autocomplete = "off" bilden, da es ein mobiler Browser ist und wahrscheinlich html5 –

+0

Ich habe es bereits versucht, aber keiner der Autovervollständigen oder autocapitalize etc. funktioniert mit Vorhersage von Android. –

6

Versuchen Sie dieses:

var $input = $('input') 
$input.keyup(function(e) { 
    var max = 5; 
    if ($input.val().length > max) { 
     $input.val($input.val().substr(0, max)); 
    } 
}); 
+1

so einfach und so nützlich! In Android funktioniert der ganze andere Vorschlag mit "return false" auf value> maxlength nicht, das funktioniert einwandfrei! Vielen Dank! –

+0

Das gleiche hier. Die andere Antwort funktionierte nicht auf Android Cordova (obwohl es Worte in Desktop-Chrome-Browser). Aber dieses funktioniert auch mit Autocomplete, Autokorrektur aktiviert. – Hawk

+0

Dies funktioniert bei meinem Android Cordova-Projekt nicht, gibt es eine Problemumgehung? – Sumit