Voici mon code:
function textCounter(field, countfield, maxlimit) {
if (field.value.length > maxlimit) {
field.value = field.value.substring(0, 160);
field.blur();
field.focus();
return false;
} else {
countfield.value = maxlimit - field.value.length;
}
}
Comment puis-je afficher le nombre de caractères restants d'une certaine zone de texte avec une limite de 160?
Fonction d'élément HTML dynamique Le code dans ici avec un peu de modification et de simplification:
<input disabled maxlength="3" size="3" value="10" id="counter">
<textarea onkeyup="textCounter(this,'counter',10);" id="message">
</textarea>
<script>
function textCounter(field,field2,maxlimit)
{
var countfield = document.getElementById(field2);
if ( field.value.length > maxlimit ) {
field.value = field.value.substring( 0, maxlimit );
return false;
} else {
countfield.value = maxlimit - field.value.length;
}
}
</script>
J'espère que cela t'aides!
pointe:
Lors de la fusion des codes avec votre page, assurez-vous que les éléments HTML (textarea
, input
) sont chargés en premier avant les scripts (fonctions Javascript)
Vous pouvez lier un événement de pression de touche avec votre zone de saisie et retourner false si les caractères sont supérieurs à 160 résoudra le problème jsfiddle
JS
$('textarea').keypress(function(){
if(this.value.length > 160){
return false;
}
$("#remainingC").html("Remaining characters : " +(160 - this.value.length));
});
HTML
<textarea></textarea> <span id='remainingC'></span>
Vous trouverez ci-dessous une implémentation JS/HTML simple qui met à jour correctement les caractères restants lorsque l'entrée a été supprimée.
Bootstrap et JQuery sont requis pour que la mise en page et les fonctionnalités correspondent. (Testé sur JQuery 2.1.1 selon l'extrait de code inclus).
Assurez-vous d'inclure le code JS de sorte qu'il soit chargé après le code HTML. Envoyez-moi un message si vous avez des questions.
$(document).ready(function() {
var len = 0;
var maxchar = 200;
$( '#my-input' ).keyup(function(){
len = this.value.length
if(len > maxchar){
return false;
}
else if (len > 0) {
$( "#remainingC" ).html( "Remaining characters: " +( maxchar - len ) );
}
else {
$( "#remainingC" ).html( "Remaining characters: " +( maxchar ) );
}
})
});
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<div class="row">
<div class="col-sm-6 form-group">
<label>Textarea</label>
<textarea placeholder="Enter the textarea input here.. (limited to 200 characters)" rows="3" class="form-control" name="my-name" id="my-input" maxlength="200"></textarea><span id='remainingC'></span>
</div>
</div> <!--row-->
Enregistrez simplement un gestionnaire d'événements sur les événements keydown
et vérifiez la longueur du champ de saisie de cette fonction et écrivez-le dans un élément distinct.
Voir la démo.
var maxchar = 160;
var i = document.getElementById("textinput");
var c = document.getElementById("count");
c.innerHTML = maxchar;
i.addEventListener("keydown",count);
function count(e){
var len = i.value.length;
if (len >= maxchar){
e.preventDefault();
} else{
c.innerHTML = maxchar - len-1;
}
}
Vous devriez également vérifier la longueur de votre serveur, car Javascript peut être désactivé ou l'utilisateur veut faire quelque chose de méchant à dessein.
Essaye ça
HTML
<textarea id="textarea" rows="8" cols="50" maxlength="100" ></textarea>
<div id="feedback"></div>
JS
$(document).ready(function() {
var max = 1000;
$('#feedback').html(max + 'characters remaining');
$('#textarea').keyup(function() {
var text_length = $('#textarea').val().length;
var text_remaining = max - text_length;
$('#feedback').html(text_remaining + ' characters remaining');
});
});
Que diriez-vous de cette approche, qui divise le problème en deux parties:
textarea
, qui devient rouge lorsqu'il atteint zéro mais permet toujours à l'utilisateur de taper.textarea
est supérieur à 160.Mon textarea
a un id de Message
, et le span
dans lequel j'affiche le nombre de caractères restants a un id de counter
. La classe css de error
est appliquée lorsque le nombre de caractères restants atteint zéro.
var charactersAllowed = 160;
$(document).ready(function () {
$('#Message').keyup(function () {
var left = charactersAllowed - $(this).val().length;
if (left < 0) {
$('#counter').addClass('error');
left = 0;
}
else {
$('#counter').removeClass('error');
}
$('#counter').text('Characters left: ' + left);
});
});
Essayez par exemple le code suivant:
code de travail dans jsfiddle.net
Pour textArea, utilisez ceci:
<textarea id="txtBox"></textarea>
...
...
Pour textBox, utilisez ceci:
<input type="text" id="txtBox"/>
<br>
<input type="text" id="counterBox"/>
<script>
var txtBoxRef = document.querySelector("#txtBox");
var counterRef = document.querySelector("#counterBox");
txtBoxRef.addEventListener("keydown",function(){
var remLength = 0;
remLength = 160 - parseInt(txtBoxRef.value.length);
if(remLength < 0)
{
txtBoxRef.value = txtBoxRef.value.substring(0, 160);
return false;
}
counterRef.value = remLength + " characters remaining...";
},true);
</script>
J'espère que cela t'aides!
essayez ce code ici ... cela se fait en utilisant la fonction javascript onKeyUp () ...
<script>
function toCount(entrance,exit,text,characters) {
var entranceObj=document.getElementById(entrance);
var exitObj=document.getElementById(exit);
var length=characters - entranceObj.value.length;
if(length <= 0) {
length=0;
text='<span class="disable"> '+text+' <\/span>';
entranceObj.value=entranceObj.value.substr(0,characters);
}
exitObj.innerHTML = text.replace("{CHAR}",length);
}
</script>
J'avais besoin de quelque chose comme ça et la solution que j'ai donnée avec l'aide de jquery est la suivante:
<textarea class="textlimited" data-textcounterid="counter1" maxlength="30">text</textarea>
<span class='textcounter' id="counter1"></span>
Avec ce script:
// the selector below will catch the keyup events of elements decorated with class textlimited and have a maxlength
$('.textlimited[maxlength]').keyup(function(){
//get the fields limit
var maxLength = $(this).attr("maxlength");
// check if the limit is passed
if(this.value.length > maxLength){
return false;
}
// find the counter element by the id specified in the source input element
var counterElement = $(".textcounter#" + $(this).data("textcounterid"));
// update counter 's text
counterElement.html((maxLength - this.value.length) + " chars left");
});
Α démo en direct ici
HTML:
<form>
<textarea id='text' maxlength='10'></textarea>
<div id='msg'>10 characters left</div>
<div id='lastChar'></div>
</form>
JS:
function charCount() {
var textEntered = document.getElementById('text').value;
var msg = document.getElementById('msg');
var counter = (10-(textEntered.length));
msg.textContent = counter+' characters left';
}
var el = document.getElementById('text');
el.addEventListener('keyup',charCount,false);