Tengo el siguiente código y no sé qué hacer a continuación. La idea es que cuando ingresas texto en un área de texto, un contador te dice cuántos caracteres te quedan. Una vez que llegue al máximo de caracteres, quiero dejar de permitir que se ingresen caracteres o eliminar todos los caracteres que se ingresaron para que solo haya 10 caracteres en el área de texto. Sé que tengo que poner el código donde dice alert("LONG"); pero no estoy muy seguro de qué.
var maxLen = 10; console.log("Start"); $('#send-txt').keyup(function(){ var Length = $("#send-txt").val().length; var AmountLeft = maxLen - Length; $('#txt-length-left').html(AmountLeft); if(Length >= maxLen){ alert("LONG"); } });Todas estas respuestas son un poco extrañas porque intentan hacer demasiado. Una forma más simple y visualmente más agradable (porque muestra que el texto se corta rápidamente), y con menos rarezas que el ejemplo anterior (¿observe cómo sobrescribe la clave final?), Es simplemente cortar la cantidad de caracteres en keyUp al número que está permitido.
var maxchars = 400; $('body').on('keyup paste', 'textarea', function () { $(this).val($(this).val().substring(0, maxchars)); var tlength = $(this).val().length; remain = maxchars - parseInt(tlength); $('#remain').text(remain); });Tenga en cuenta que esto también funciona para pegar texto, ya que algunos de los ejemplos anteriores no lo hacen.
Ejemplo aquí: http://jsfiddle.net/PzESw/5/
Aquí va. Todo lo que supere el límite de caracteres será eliminado.
$('textarea').keypress(function(e) { var tval = $('textarea').val(), tlength = tval.length, set = 10, remain = parseInt(set - tlength); $('p').text(remain); if (remain <= 0 && e.which !== 0 && e.charCode !== 0) { $('textarea').val((tval).substring(0, tlength - 1)); return false; } })Devolver falso y usar .keypress() en lugar de .keyup() detiene la entrada una vez que se alcanza la longitud. Aquí está el ejemplo en un jsFiddle:
Actualizado para permitir retroceso.