2011-11-30 49 views
0

我遇到問題。當用戶將它留空時,我希望文本被默認值填充,這裏是我的代碼。請幫我解決這個錯誤。JavaScript將默認值填充到模糊的文本字段中

<html> 
<head> 
<title> 
</title> 
<script lang='javascript'> 
function makeBlank(obj,defMsg){ 
    if(obj.value==defMsg){ 
     obj.value=""; 
    } 
} 
function fillDefValue(obj,defMsg){ 
    if(obj.value==""){ 
     obj.value=defMsg; 
    } 
} 
</script> 
</head> 
<body> 
<input style="width:190px" onblur="fillDefValue(this,'User Name')" onfocus="makeBlank(this,'User Name')" value="Name" name="fromname" id="fromname" type="text"> 
</body> 
</html> 
+1

您的代碼有一個錯誤,我正在糾正它 –

+0

此代碼的行爲與我打算的一樣! –

回答

1

您的代碼有一個小錯誤。使文本字段爲空或填入缺省值的函數具有if語句,該語句檢查條件if(obj.value==defMsg),它是defMsg='User Name'。但在文本字段中,您正在分配value = "Name",所以if條件永遠不會變爲true。這就是爲什麼你的代碼不工作。您應該使用<input .... value="User Name" ......>或者您可以將這兩個函數調用爲<input ...onblur="fillDefValue(this,'Name')" onfocus="makeBlank(this,'Name')" vlaue="Name"....>。做這兩個更改的代碼將正常工作。這裏是我提到的第一個改變你的代碼:

<html> 
<head> 
<title> 
</title> 
<script lang='javascript'> 
function makeBlank(obj,defMsg){ 

    if(obj.value==defMsg){ 
     obj.value=""; 
    } 
} 
function fillDefValue(obj,defMsg){ 
    if(obj.value==""){ 
     obj.value=defMsg; 
    } 
} 
</script> 
</head> 
<body> 

<input style="width:190px" onblur="fillDefValue(this,'User Name')" onfocus="makeBlank(this,'User Name')" value="User Name" name="fromname" id="fromname" type="text"> 
</body> 
</html> 
4

你不必爲默認值傳遞給函數,它的文本元素本身的組成部分:

function makeBlank(obj) { 
    if(obj.value === obj.defaultValue){ 
     obj.value = ""; 
    } 
} 

function fillDefValue(obj) { 
    if(obj.value == "") { 
     obj.value = obj.defaultValue; 
    } 
} 

然後通過只有元素:

onblur="fillDefValue(this);" onfocus="makeBlank(this);" 

Live test case - 它適用於所有主要的瀏覽器,可能所有的瀏覽器。

+1

wowww。很好的答案。你真的值得爲此投票 –

+0

謝謝,剛剛碰巧知道'defaultValue' - 很驚訝當第一次碰到它時有多簡單。 :) –