2013-07-17 29 views
0

我一直在試圖改變textarea的高度,當用戶點擊輸入,所以他們不必滾動。我可以在IE和Chrome上管理它,但是我無法使它在Firefox上運行。請看看我的代碼。我對此很新。它似乎不認識事件,我無法找出解決辦法。 這裏是我的代碼:firefox更改textarea的高度輸入不起作用

<form id="blog-comment-form" method="post" action="index.php"> 
<textarea id="comment" name="b_com" onkeyup="showmsg()" placeholder="ADD YOUR COMMENT HERE"></textarea> 
<input type="submit" name="submit" value="POST COMMENT"/> 
</form> 

我打電話從外部文件中的函數。 我的javascript代碼:

function showmsg() { 

    if(!event){ 
      event= window.event;} 
    if (event.keyCode==13) { 
     var a = document.getElementById("comment"); 
    var b = document.getElementById("comment").style.scrollHeight; 
    a.style.height = ((a.scrollHeight)+6) + "px"; 
}else { 
    var a = document.getElementById("comment"); 
    var b = document.getElementById("testthis").style.height; 
    a.style.height = ((a.scrollHeight)+6) + "px"; 
} 

} 

謝謝

+0

你有沒有使用考慮庫已經處理了你處理的跨瀏覽器問題與? –

+0

你的textarea動態調整用戶輸入是否很重要?也許允許用戶調整文本區域是另一種選擇? 'resize:vertical;' – Dolchio

回答

0

寫這個:

function showmsg(event) { 

代替:

function showmsg() { 

寫本(HTML標記):

onkeyup="showmsg(event)" 

代替:

onkeyup="showmsg()" 
+0

它現在工作得很好。我現在像邁克爾傑克遜一樣跳舞。男人非常感謝 – Justin

0

您需要添加行屬性的文本區域。這將幫助你提高textarea的高度

+0

我該如何做到這一點,所以它適用於所有瀏覽器? – Justin

+0

行只是指定文本區域的高度(以行爲單位),可能基於實現的標準行高度......它在所有主流瀏覽器中都被支持爲textarea的html屬性,但不考慮OP試圖設置一個像素高度(基於問題中存在的代碼..) –

0

而不是使用的onkeyup屬性,你可以聽不同的方式KeyUp事件的,這也將爲您創建活動對象:

document.getElementById('comment').addEventListener('keyup', showmsg); 

一工作示例: http://jsfiddle.net/rotev/FKDVD/1/

在Firefox和Chrome上測試。

+0

你能解釋一下投票嗎? –

+0

我只是試過了,但是我不能讓它工作 – Justin

+0

你試過這個工作的例子嗎?它正在使用Firefox和Chrome。 –

0

你的代碼有一些錯誤。 在某些瀏覽器上,您的事件處理可能無法正常工作。

所以首先,您需要從回調本身獲取事件,而不是使用名爲event的全局變量。

要調整textarea的大小,你可以使用屬性cols和rows。

來處理該事件,您可以將回調以下列方式:

function init(){ 
    var e = document.getElementById("comment"); 
    e.onkeyup = showmsg; 
} 

欲瞭解更多有關事件偵聽器,檢查this out。 要調整textarea的,你可以使用行:

function showmsg(event) { 
    if (event.keyCode==13) { 
     var a = document.getElementById("comment"); 
     a.rows++; 
    } 
} 

要調用初始化,你可以將它關聯到素體:

<body onload="init()"> 

最後的代碼如下所示:

<html> 
<head> 
<script> 
function init(){ 
    var e = document.getElementById("comment"); 
    e.onkeyup = showmsg; 
} 
function showmsg(event) { 
    if (event.keyCode==13) { 
     var a = document.getElementById("comment"); 
     a.rows++; 
    } 
} 
</script> 
</head> 
<body onload="init()"> 
<form id="blog-comment-form" method="post" action="index.php"> 
<textarea id="comment" name="b_com" placeholder="ADD YOUR COMMENT HERE"></textarea> 
<input type="submit" name="submit" value="POST COMMENT"/> 
</form> 
</body> 
</html> 
相關問題