Максимальная длина текстовой области не работает на IE8
Из исследований в Интернете, атрибут максимальной длины не работает на IE 8 и 9
Чтобы решить проблему, я попробовал решение отсюда, используйте другую функцию, которая предназначена для представления текстовой области:
//Dynamic append the textarea row
function do_resize(textArea) {
while (
textArea.rows > 1 &&
textArea.scrollHeight < textArea.offsetHeight
)
{
textArea.rows--;
}
while (textArea.scrollHeight > textArea.offsetHeight)
{
textArea.rows++;
}
textArea.rows++
}
<textarea name="q<%=countNo%>_ans" rows="3" cols="55" maxlength="2000" style="resize: none;" onkeyup="new do_resize(this);" onKeyPress="return ( this.value.length < 2000);"></textarea>
Проблема в том, что textarea не может ввести какой-либо символ после того, как он превысит 2000 в IE8 9, но я все еще могу использовать функцию копирования и вставки, которая превысит ограничение textarea. Как это исправить? Спасибо
4 ответа
Код в вопросе эффективно отключает ввод с клавиатуры при достижении предела. Чтобы наложить ограничение и на вставляемый контент, вам нужно обрабатывать и другие события. Следующий код усекает содержимое текстовой области до заданной длины. Это нехорошее удобство использования (вы, вероятно, должны сигнализировать о попытке превышения лимита вместо тихого усечения, и вы могли бы иметь счетчик символов на странице, чтобы помочь пользователю), но он делает то, о чем просили:
<textarea maxlength=2000
onchange="testLength(this)"
onkeyup="testLength(this)"
onpaste="testLength(this)"
></textarea>
<script>
var maxLength = 2000;
function testLength(ta) {
if(ta.value.length > maxLength) {
ta.value = ta.value.substring(0, maxLength);
}
}
</script>
Используйте этот код, он будет работать для версий ниже IE 9. изменить только версию, если условие.
if(navigator.appVersion.indexOf("MSIE .9")!=-1)
{
$('#inputid').bind('keyup blur', function () {
var $this = $(this);
var len = $this.val().length;
var maxlength = 3;
if (maxlength && len > maxlength) {
var inputvalue= $this.val().slice(0, maxlength);
$this.val("");
$this.val(inputvalue);
}
});
}
Для краткости: maxlength для textarea - это новая функция HTML5, которая впервые была поддержана IE в 10. IE 9 и ниже никогда не поддерживал ее.
Просто добавь onpaste
исправил проблему
<textarea name="q<%=countNo%>_ans" rows="3" cols="55" maxlength="2000" style="resize: none;" onkeyup="new do_resize(this);" onKeyPress="return ( this.value.length < 2000); onpaste="return ( this.value.length < 2000);"></textarea>