2013-06-04 4 views
5

Из исследований по Интернету, максимальная длина атрибута не работает на IE 8 и 9Максимальная длина текстового поля не работает на IE8

Чтобы решить эту проблему, я попробовал решение здесь, это использовать с другой функцией, для представления текстовой:

//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> 

проблема заключается в том, текстовое поле не может ввести любой символ после него превышает 2000 в IE8 9, но я все еще могу использовать функцию копирования и вставки, которые будут превышать предел текстовой , Как это исправить? благодаря

+0

извините. Кажется, onpaste = "return false" исправлена ​​проблема – user1871516

+1

очень легко использовать длину ' « – Sender

ответ

11

Код в вопросе эффективно отключает набираете с клавиатуры, когда достигнут предел. Чтобы наложить ограничение на вставленный контент, вам также нужно обрабатывать другие события. Следующий код обрезает содержимое textarea до указанной длины. Это не очень хорошая юзабилити (вы, вероятно, должны сигнализировать о попытке превзойти предел, вместо молчаливого усечения, и вы можете иметь счетчик символов на странице, чтобы помочь пользователю), но он делает то, что было запрошено:

<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> 
-2

Просто добавьте 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> 
+0

». Лечение хуже, чем заболевание, и это ответ на другую проблему: «Как уменьшить удобство использования, не позволяя пользователям вставлять текст в текстовое пространство?» –

+0

Это максимальная длина для – user1871516

+0

Нет , 'maxlength' ограничивает объем ввода пользователя. Он не предназначен для ограничения методов ввода, и он этого не делает. –

1

Только для некоторых hstory на этом maxlength в текстовом поле - это новая функция HTML5, которая была сначала поддержана IE в 10. IE 9 и ниже никогда не поддерживали его.

1

Этот код будет работать ниже 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); 
             } 
            }); 
           } 
Смежные вопросы