2016-07-07 4 views
0

Ich erstelle einen Zähler für den Textbereich und für jetzt ich Erfolg, die Länge zu zählen, aber ich möchte, nachdem es das Limit erreichen, kann der Benutzer nicht mehr tippen.jQuery Counter: Stopp-Typ, wenn die Grenze erreichen

Wie kann man aufhören zu schreiben, wenn das Limit erreicht?

$('textarea').keyup(function() { 
    var max = 10; 
    var len = $(this).val().length; 
    var char = max - len; 
    if (len >= max) { 
    $(this).parent().find('.counter').text(char + '/'+max); 
    $(this).parent().find('.counter').css({"color":"red"}); 
    } 
    else { 
    $(this).parent().find('.counter').text(char + '/'+max); 
    $(this).parent().find('.counter').css({"color":"#ccc"});  
    } 
}); 

here die jsfiddle https://jsfiddle.net/5vf8pce3/

+0

Verwendung auch maxLength Attribut verwenden können Typisierung Shiv

Antwort

1

Sie können:

1) Änderung keyup zu keydown und return false;. Fiddle: https://jsfiddle.net/mrlew/5vf8pce3/4/

2) oder verwenden Sie maxlength attribute (HTML5).

<textarea maxlength="10"></textarea> 
+0

hat nicht funktioniert sirrr. –

+0

Überprüft die Geige? Es hat funktioniert, aber ich bearbeite es jetzt mit Backspace-Handling. – mrlew

1

Try this:

var maxLength = 10; 
 
$('textarea').keyup(function() { 
 
    var length = $(this).val().length; 
 
    var length = maxLength-length; 
 
    $(this).parent().find('.counter').text(length +"/"+maxLength); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> 
 
<textarea class="form-control" maxlength="10" rows="3"></textarea> 
 
<span class="counter"></span>

+0

seine Arbeit sir zu verhindern , aber wenn wir das Limit erreichen, können wir immer noch das letzte Alphabet eingeben und ändern. wie man das letzte Alphabet deaktiviert. Ich meine, wenn das Limit erreicht, kann der Benutzer wirklich nicht mehr tippen. great code btw –

+0

und es scheint, meine andere textarea erhalten Fehlerzähler, heres jsfiddle mit Ihrem Code https://jsfiddle.net/5vf8pce3/3/ –

0

Die jQuery-Handler ein Objekt nehmen. Was ich meine ist, dass die Funktion, die das keyup-Ereignis behandelt, ein Objekt annehmen kann, das das Ereignis enthält. Das Ereignis kann dann mit der Funktion preventDefault() abgebrochen werden. Festcode:

$('textarea').keyup(function (event) { 
    var max = 10; 
    var len = $(this).val().length; 
    var char = max - len; 
    if (len >= max) { 
    $(this).parent().find('.counter').text(char + '/'+max); 
    $(this).parent().find('.counter').css({"color":"red"}); 
    event.preventDefault(); 
    } 
    else { 
    $(this).parent().find('.counter').text(char + '/'+max); 
    $(this).parent().find('.counter').css({"color":"#ccc"});  
    } 
}); 
+0

und bei Bedarf weitere Dokumentation: https://api.jquery.com/keyup/ –

0

versuchen Sie dieses ..

$('textarea').keyup(function() { 
var max = 10; 
var len = $(this).val().length; 
var char = max - len; 
if (len >= max) { 

$(this).parent().find('.counter').text(char + '/'+max); 
$(this).parent().find('.counter').css({"color":"red"}); 
$(this).attr('disabled', 'disabled'); 
} 
else { 
    $(this).parent().find('.counter').text(char + '/'+max); 
    $(this).parent().find('.counter').css({"color":"#ccc"});  
} 
});