2013-06-01 37 views
0

我想使一個textarea有一個設置maxlength,它被保存在一行上。一旦達到最大長度,textareas屬性需要被定位,所以maxlength加倍,另一行被添加。更改「textarea」行一旦「maxlength」達到

要看看這是否可以工作,我試着只是添加一個額外的行和四十多個字符。這裏是我的代碼...

<!DOCTYPE html> 
<HEAD> 
<TITLE>Cool Text Form</TITLE> 
</HEAD> 
<script language="javascript" type="text/javascript"> 
function newline() 
{ 
    x = document.getElementById("notesfield").length; 
    if (x >= 40) 
     document.getElementById("notesfield").rows="2"; 
     document.getElementById("notesfield").maxlength="80"; 
} 
</script> 
<textarea id="notesfield" maxlength="40" rows="1" onkeyup="newline()" class="notes">Notes go here.</textarea> 

問題是,此代碼不起作用。我試過了,一旦達到最大長度,什麼都不會發生。另外,在Chrome的javascript控制檯中沒有錯誤。任何人都可以幫助我做到這一點,或指引我朝着正確的方向發展嗎?

謝謝!

回答

3

http://jsfiddle.net/UQTY2/119/

不知道什麼你正在嘗試做的,而是用document.getElementById("notesfield").value.length檢查的文本長度,你已經忘記了brakets

<!DOCTYPE html> 
<HEAD> 
<TITLE>Cool Text Form</TITLE> 
</HEAD> 
<script language="javascript" type="text/javascript"> 
function newline() 
{ 
    x = document.getElementById("notesfield").value.length; 
    if (x >= 40) 
    { 
     document.getElementById("notesfield").rows="2"; 
     document.getElementById("notesfield").maxlength="80"; 
    } 
} 
</script> 
<textarea id="notesfield" maxlength="40" rows="1" onkeyup="newline()" class="notes">Notes go here.</textarea> 
+0

+1指出。但是'.rows'首先是錯誤的。 – user1596138

+2

我認爲這應該是它應該如何做:http://jsbin.com/ehusuj/1/不要使用內聯函數(onkeyup屬性),使用setAttribute,你可能想使用===而不是> =。 – chrisbuchholz

+0

哦,好的!所以現在一切都是固定的,使用行的正確方法是什麼? – user1472065

0

嘗試使用setAttribute()改變「行」和' maxlength'屬性值。

function newline() { 
    var x = document.getElementById("notesfield").value.length; 
    if (x >= 40) { 
     document.getElementById("notesfield").setAttribute('rows', 2); 
     document.getElementById("notesfield").setAttribute('maxlength', 80); 
    } 
} 
相關問題