59 votes

L'attribut HTML maxlength ne fonctionne pas sur Chrome et Safari ?

<input type="number" maxlength="5" class="search-form-input" name="techforge_apartmentbundle_searchformtype[radius]" id="techforge_apartmentbundle_searchformtype_radius">

Ceci est mon HTML, pris avec firebug (sur chrome).

Je suis autorisé à écrire autant de caractères que je veux dans le champ de formulaire - dans Chrome et Safari.

Sur Firefox ou IE10, la limite est bonne.

Je n'ai pas trouvé ce problème sur le net.

Remarque : type="nombre" - pas de texte.

Quelqu'un a déjà vu ce problème ?

73voto

Totalo Doto Neto Points 1098

La longueur maximale ne fonctionnera pas avec <input type="number" la meilleure façon que je connaisse est d'utiliser l'événement oninput pour limiter la longueur maximale. Veuillez consulter le code ci-dessous.

 <input name="somename"
        oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);"
        type = "number"
        maxlength = "6"
     />

5voto

zen.c Points 335

Pour ceux qui n'arrivent toujours pas à le faire fonctionner... Essayez ceci pour allumer les plus gros pavés numériques :

 <input type="number" name="no1" maxlength="1" size="1" max="9" pattern="[0-9]*" />

Et le js :

 $('input[name="no1"]').keypress(function() {
    if (this.value.length >= 1) {
        return false;
    }
});

3voto

user3325657 Points 25

Voici un exemple utilisant type="number" et maxlength , qui fonctionne avec Chrome, IE et autres. J'espère que ça aide!

 <!DOCTYPE html>
<html>

    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">

        </script>
        <script>
            function test(id, event) {
                var element = $("#" + id);
                var len = element.val().length + 1;
                var max = element.attr("maxlength");

                var cond = (46 < event.which && event.which < 58) || (46 < event.keyCode && event.keyCode < 58);

                if (!(cond && len <= max)) {
                    event.preventDefault();
                    return false;
                }
            }
        </script>
    </head>

    <body>
        <input id="test" size="3" type="number" maxlength="3" onkeypress="test(this.id, event)">
    </body>

</html>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X