2013-06-04 12 views
5

Z badań nad internetem, max atrybut długość nie działa na IE 8 i 9Max długość textarea nie działa na IE8

Aby rozwiązać ten problem, próbowałem rozwiązanie stąd, że korzystać z innych funkcji, które jest dla prezentacji tekstowego:

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

problem polega na tym, textarea nie jest w stanie wprowadzić dowolny znak po nim przekraczać 2000 w IE8 9, ale nadal nie mogę korzystać z funkcji kopiowania i wklejania, który przekroczy limit textarea . Jak to naprawić? Dzięki

+0

przepraszam. Wydaje się, że onpaste = "return false" naprawił problem – user1871516

+1

jest bardzo łatwy przy użyciu długości ' ' – Sender

Odpowiedz

11

kod w pytaniu skutecznie wyłącza wpisując z klawiatury po osiągnięciu limitu. Aby nałożyć ograniczenie na wklejoną zawartość, musisz także obsługiwać inne zdarzenia. Poniższy kod obcina zawartość textarea do podanej długości. Nie jest to dobra użyteczność (prawdopodobnie powinieneś zasygnalizować próbę przekroczenia limitu, zamiast cichego przycinania, i możesz mieć licznik znaków na stronie, aby pomóc użytkownikowi), ale robi to, o co został poproszony:

<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

Wystarczy dodać onpaste Naprawiono problem

<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

Lekarstwo jest gorsze niż choroba, i jest odpowiedzią na inny problem:" Jak zmniejszyć użyteczność, uniemożliwiając użytkownikom wklejenie tekstu w obszarze tekstowym? " –

+0

Taka maksymalna długość ma na celu – user1871516

+0

Nie , 'maxlength' ogranicza ilość danych wprowadzanych przez użytkownika, nie ma na celu ograniczania metod wprowadzania danych, a tego nie robi .. –

1

Dla niektórych hstory, maksymalna długość na textarea jest nową funkcją HTML5, która była obsługiwana tylko przez IE w 10. IE 9 i niżej nigdy go nie obsługiwały.

1

Użyj tego kodu, który będzie działać w wersji poniżej IE 9. zmieniaj tylko wersję, jeśli jest to warunkowe.

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); 
             } 
            }); 
           } 
Powiązane problemy