April 14, 2010 by Christoff Truter JavaScript
Limiting the amount of characters that a html textbox can take is quite straightforward,
you simply add the maxlength attribute and thats it.
Unfortunately for some strange reason a html textarea doesn't have this attribute, hence
the reason for this post.
We're going to attempt to add/process this attribute, like the following snippet:
<table> <tr> <td> Title </td> <td> <input name="txtTitle" type="text" maxlength="32"> </td> </tr> <tr> <td> Description </td> <td> <textarea name="txtDescription" maxlength="128" rows="4" cols="40"></textarea> </td> </tr> <tr> <td> Body </td> <td> <textarea name="txtBody" maxlength="1024" rows="20" cols="80"></textarea> </td> </tr> </table>
function limiter()
{
var textareas = document.getElementsByTagName('textarea');
for(var i = 0; i < textareas.length; i++)
{
var textarea = textareas.item(i);
limit(textarea);
}
}
function limit(sender)
{
var maxlength = sender.getAttribute('maxlength');
if (maxlength != null)
{
// limit input values
sender.onkeypress = function(e)
{
// Crossbrowser Issue
if (e == null)
e = window.event;
// exclude certain keys from our limiter
if ((e.keyCode == 8) ||
(e.keyCode > 36) &&
(e.keyCode < 41)) return true;
return (sender.value.length < maxlength);
}
// limit pasted values
sender.onpaste = function()
{
// onAfterPaste
setTimeout(function()
{
if(sender.value.length > maxlength) {
sender.value = sender.value.substring(0, maxlength);
}
}, 1);
}
}
}
// Only Attach events needed for limiting the textareas once the page finished loading
if (window.addEventListener) { // FF etc
window.addEventListener('load', limiter, false);
}
else{ // IE
window.attachEvent('onload', limiter);
}
August 31, 2010 by Anonymous
This was really helpful for me. Thanks a lot ! :)