Но отправка все равно будет заблокирована.
А вот всякие события, типа cut, paste, наступают до вырезания или вставки, т.е. их использовать не получится.
Вообще, странно, что change не хочет оперативно срабатывать, а только на потерю фокуса.
Короче, тогда такой вариант решения:
<html>
<head>
<style type="text/css">
.border-black {border: 1px solid black}
.border-red {border: 1px solid red}
</style>
<script type="text/javascript"><!--
function checkLength (id, maxLen)
{
var object = document.getElementById (id);
object.className = ( object.value.length > maxLen ) ? "border-red" : "border-black";
}
function setMaxLength (id, maxLen)
{
var object = document.getElementById (id);
with ( object )
{
maxLength = maxLen;
className = "border-black";
}
eval ("setInterval (function() {checkLength ('" + id + "', " + maxLen + ")}, 10)");
}
function validate (form)
{
if ( form.text.value.length > maxLen )
{
alert ("Длинна текста больше допустимой");
form.text.focus();
return false;
}
return true;
}
//--></script>
</head>
<body onload="setMaxLength ('text', 10)">
<form onsubmit="return validate (this)">
<textarea cols="60" rows="12" id="text" name="text"></textarea><br>
<input type="submit" value=" Отправить ">
</form>
</body>
</html>