J’aimerais limiter le nombre de caractères de ma division modifiable à 10. Une fois que l’utilisateur a atteint la limite, j’aimerais utiliser la méthode .preventDefault () pour protéger la division de caractères supplémentaires. Pouvez vous m’aider s’il vous plait? JSFiddle https://jsfiddle.net/7x2dfgx6/1/ HTML
OOOOO
JQuery
jQuery(document).ready(function($){ const limit = 10; rem = limit - $('#About').text().length; $("#counter").append("You have " + rem + " chars left."); $("#About").on('input', function(event) { var char = $('#About').text().length; rem = limit - char; $("#counter").html("You have " + rem + " chars left."); if(char>limit) { event.preventDefault(); //TODO } }); });
Pour répondre à votre question principale:
.preventDefault()
annuler le comportement des événements pouvant être annulés . événement d’ input
n’est pas.
Pour vérifier si un event
est annulable, essayez: console.log(event.cancelable);
.
Pour l’ input
il dit “faux”
Vous voudrez peut-être quelque chose comme ceci (non testé):
const limit = 10; var rem = limit - $('#About').text().length; $("#counter").append("You have " + rem + " chars left."); $("#About").on('input', function(event) { var char = $(this).text().length; rem = limit - char; if(rem <= 0){ $(this).text($(this).text().slice(0, limit)); } $("#counter").html("You have " + rem + " chars left."); });
MODIFIER
JSFiddle demo
Comme c’est contentEditable , j’ai dû utiliser un code supplémentaire (à partir de cette réponse) pour définir un signe d’insertion à la fin de l’entrée.
utiliser keydown
au lieu de l’ input
jQuery(document).ready(function($){ const limit = 10; rem = limit - $('#About').text().length; $("#counter").append("You have " + rem + " chars left."); $("#About").on('keypress', function(event) { var char = $('#About').text().length; if(char>limit) { return false; //or event.preventDefault(); //TODO } rem = limit - char; $("#counter").html("You have " + rem + " chars left."); }); });
Essayez de changer la valeur de l’atsortingbut contenEditable. Aussi, je règle le contrôle de la limite à> =
jQuery(document).ready(function($){ const limit = 10; rem = limit - $('#About').text().length; $("#counter").append("You have " + rem + " chars left."); $("#About").on('input', function(event) { var char = $('#About').text().length; rem = limit - char; event.preventDefault(); if(char>=limit) { $('#About').attr('contenteditable','False'); //TODO } $("#counter").html("You have " + rem + " chars left."); }); });