Je veux utiliser jquery pour limiter le nombre de caractères dans un div éditable (ou une entrée de formulaire).
En ce qui concerne le champ de saisie, vous pouvez utiliser l'attribut maxlength. Si vous recherchez div, vérifiez les points suivants,
$(function() {
$ ('#editable_div').keydown ( function (e) {
//list of functional/control keys that you want to allow always
var keys = [8, 9, 16, 17, 18, 19, 20, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 144, 145];
if( $.inArray(e.keyCode, keys) == -1) {
if (checkMaxLength (this.innerHTML, 15)) {
e.preventDefault();
e.stopPropagation();
}
}
});
function checkMaxLength (text, max) {
return (text.length >= max);
}
});
<div id="editable_div" contentEditable="true" onclick="this.contentEditable='true';" >TEXT BEGIN:</div>
Edit: vous devez réécrire la fonction checkMaxLength pour ignorer les tabulations et les retours à la ligne
utiliser la variable maxlength
dans la balise input
<input type="text" maxlength="20" />
Attribut Maxlength - pour navigateur, qui supporte cette fonctionnalité.
Javascript - pour les autres.
<input class="test-input" type="text" maxlength="12" />
<script>
$('.test-input').unbind('keyup change input paste').bind('keyup change input paste',function(e){
var $this = $(this);
var val = $this.val();
var valLength = val.length;
var maxCount = $this.attr('maxlength');
if(valLength>maxCount){
$this.val($this.val().substring(0,maxCount));
}
});
</script>
Cela devrait fonctionner pour vous, je pense.
HTML
<input type="text" name="myText" id="myText" data-maxlength="10" />
jQuery
$('#myText').keyup(validateMaxLength);
function validateMaxLength()
{
var text = $(this).val();
var maxlength = $(this).data('maxlength');
if(maxlength > 0)
{
$(this).val(text.substr(0, maxlength));
}
}
Si vous voulez utiliser JQuery, vous pouvez écrire quelque chose vous-même ou simplement utiliser un plugin existant tel que celui-ci .
Mais je suis d'accord avec dku.rajkumar ... Quel est le problème avec l'utilisation de l'attribut maxlength
?
<input type="text" maxlength="15" />
Si vous êtes le plus grand fan de JQuery à ce jour et que vous souhaitiez désespérément définir une maxlength
pour tous les champs d'entrée à la fois, procédez comme suit:
$(document).ready(function() {
$('input[type="text"]').attr({ maxLength : 15 });
});
Gardez simplement à l'esprit que cette méthode (celle de JQuery) ne fonctionnera pas pour les personnes qui ont (pour quelque raison que ce soit) JavaScript désactivé. Alors que l'attribut maxlength
de la balise input
fonctionne pour tout le monde sur tous les navigateurs.
Disons que c'est une entrée de formulaire.
vous pouvez le faire avec l'attribut 'maxlength' mais si vous dites 'using jQuery',
voici la solution.
$('input#limited').attr('maxlength', '3');
ou vous pouvez vérifier chaque pression de touche
$('input#limited').keypress(function() {
/*
check for 3 or greater than 3 characters.
If you check for only greater than 3, then it will let
you write the fourth character because just before writing,
it is not greater than three.
*/
if($(this).val().length >= 3) {
$(this).val($(this).val().slice(0, 3));
return false;
}
});
il suffit d'utiliser l'attribut appelé "maxlength". Vous pouvez en savoir plus sur les attributs d’entrée à w3 input