2013-01-17 32 views
0

表單中能不能請您提供下列資料:訪問文本區域使用

我有一個登記表,和一個文本區域

<form id="register" name="register" method="post" action="register.php"> 

<textarea rows="5" id="bio" name="bio" method="post">Biographical information</textarea> 

</form> 

內使用Java腳本,我一直在努力所以默認文本焦點去除和模糊恢復創造onfocus和的onblur事件的事件處理程序,如下:

var bioField = document.getElementById("bio"); 

bioField.onfocus = function() { 
    if (bioField.value == "Biographical information") { 
     bioField.value = ""; 
    } 
}; 

bioField.onblur = function() { 
    if (bioField.value == "") { 
     bioField.value = "Biographical information"; 
    } 
}; 

我想通過獲得由ID的元素會的工作,但它不會 似乎是。沒有其他重複的名稱/ ID存在。

任何幫助非常感謝。 謝謝你們

+1

如果這仍然不適合你,也許創建一個JSFiddle與更多的上下文,所以我們可以確定錯誤的位置。還要確保你正在檢查你的控制檯是否有錯誤。 – jholloman

+0

錯誤控制檯顯示什麼? 'TypeError:bioField是null'? –

回答

1

使用佔位符屬性:

<textarea rows="5" id="bio" name="bio" method="post" placeholder="Biographical information"></textarea> 
+0

如果您不需要與舊版瀏覽器兼容,這是一個很好的解決方案。 – jholloman

0

它的正常工作,也許問題是,佔位符默認值是「履歷信息」和腳本正在測試的「關於你的一切」。我在發佈時做出的更改正是您所需要的。

var bioField = document.getElementById("bio"); 

bioField.onfocus = function() { 
    if (bioField.value == "Biographical information") { 
     bioField.value = ""; 
    } 
}; 

bioField.onblur = function() { 
    if (bioField.value == "") { 
     bioField.value = "Biographical information"; 
    } 
}; 

http://jsfiddle.net/YeaTQ/1/

+0

THANKs guys.I無法獲得腳本運行,我正在使用php擴展名進行實時編輯,我不會推薦它。 – user1987718

+0

大家好,只是爲了更新這個線程,問題是我的腳本在頭部執行,並且元素還沒有被創建。我添加了這段代碼,並已解決了這個問題。 – user1987718

0

我的猜測是,你放置你的代碼是直接進入內<head>一個<script>標籤,所以當腳本運行的形式還尚未加載。

移動你<script>下面的表格或包裹都與window.onload

window.onload = function(){ 
    // Code goes here 
}; 
0

有兩種解決方法:

  1. 爲了在不使用你寫的javascript代碼,使用下面的代碼:

    <textarea cols="30" rows="5" id="bio" name="bio" onfocus="this.value = '' " onblur="this.value = 'All about you'">Biographical information</textarea>

  2. 我認爲javascript代碼位於控件之前(在我猜的頭文件中),因此,onfocus和onblur屬性不會被初始化。您必須將腳本放在文檔的末尾(標籤之前)。
    此外,您的腳本正在搜索另一個文本(「所有關於您」),而不是當前內部的文本(「傳記信息」)。即使你在文檔中插入JavaScript代碼,它的代碼也可以工作。