添加Javascript文本水印不起作用

时间:2011-11-09 22:01:24

标签: javascript html

我正在尝试使用javascript创建文本框水印但是使用当前代码我收到错误

网页错误详情 消息:'searchInput'未定义

<script type="text/javascript" language="javascript">

function watermark(inputId,text){ 

  var inputBox = document.getElementById(searchInput); 

      if (inputBox.value.length > 0){  

           if (inputBox.value == text)  

                  inputBox.value = '';
  }   
    else   
       inputBox.value = text;
 }
</script>

<input name="keyword2" id="searchInput" type="text" class="searchbox2"
       value="Enter a State, County, City or Zip" size="77" maxlength="30"
       onfocus="watermark('searchInput','Enter a State, County, City or Zip');"
       onblur="watermark('searchInput','Enter a State, County, City or Zip');"/>

3 个答案:

答案 0 :(得分:1)

您的函数所期望的变量名为inputId而不是searchInput ..

所以改变这一行

var inputBox = document.getElementById(searchInput); 

var inputBox = document.getElementById(inputId); 

替代

为避免完全命名元素,只需传递this作为第一个参数,因为它将引用元素

function watermark(element, text) {
    if (element.value.length > 0) {
        if (element.value == text) {
            element.value = '';
        }
    }
    else element.value = text;
}

<input name="keyword2" id="searchInput" type="text" class="searchbox2"
       value="Enter a State, County, City or Zip" size="77" maxlength="30"
       onfocus="watermark(this,'Enter a State, County, City or Zip');"
       onblur="watermark(this,'Enter a State, County, City or Zip');"/>

演示http://jsfiddle.net/ZtutT/

答案 1 :(得分:0)

在searchInput周围添加引号。

getElementById接受一个字符串,您正在引用一个未声明的变量。

document.getElementById('searchInput'); 

答案 2 :(得分:0)

您需要在搜索输入getElementById声明周围加上引号,如下所示:

document.getElementById('searchInput');

此外,更直接,更简单的方法是将其放入输入中:

onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;"

希望这会有所帮助:)