Javascript 使用onblur/onfocus创建字段占位符

Javascript 使用onblur/onfocus创建字段占位符,javascript,forms,Javascript,Forms,我正在尝试编写一个小脚本,作为表单字段占位符,以覆盖通常缺少的内容。javascript新手,因此我非常感谢您的帮助。我不确定我会错在哪里 function replacer(){ var infoDef = document.getElementById("info").defaultValue; var info = document.getElementById("info"); info.onblur = changevalue; info.onfoc

我正在尝试编写一个小脚本,作为表单字段占位符,以覆盖通常缺少的内容。javascript新手,因此我非常感谢您的帮助。我不确定我会错在哪里

function replacer(){

    var infoDef = document.getElementById("info").defaultValue;
    var info = document.getElementById("info");

    info.onblur = changevalue;
    info.onfocus = changevalue;

        function changevalue()
            if (info.value = infoDef) {
                info.value = '';
            }

            else {
                info.value = infoDef;
            }
        }
}
和HTML:

<textarea name="info" id="info">Default text...</textarea>
默认文本。。。

查找defaultValue是一个良好的开端,但代码确实需要一些更改才能正常工作。试着这样做:

HTML:

<textarea id="txtarea">Default value...</textarea>
var txtarea=document.getElementById("txtarea");
txtarea.onfocus=function() {
    if (txtarea.value==txtarea.defaultValue) txtarea.value="";
}
txtarea.onblur=function() {
    if (txtarea.value=="") txtarea.value=txtarea.defaultValue;
}

这是一个测试和工作。不得不说,如果不是IE,
占位符
会容易得多。

不完全确定,但如果您将
if
语句中的单等号更改为正确的双等号,则该代码可能会起作用。谢谢D.Strout。这确实有效。不幸的是,只有当我把它放在第页时,它才会这样做。我需要在.js调用中添加
async=“true”
,以使其正常工作,这会带来不幸的副作用,有时会破坏表单(加载顺序?)。这需要是一个单独的问题吗?不确定我是否完全理解你的意思。尝试以下操作:在
窗口中运行上面的代码。onload
块如下:
window.onload=function(){/*code over*/}
Perfect。这就解决了问题。为清晰起见进行编辑:当使用带有
/*代码的页面中的原始代码时,*/
工作正常。但是当在我调用的js文件中使用代码时-
除非使用
async=“true”
属性,否则它不会工作。不幸的是,使用该属性导致整个表单在页面加载时(偶尔)中断。在
窗口中运行代码。onload
完全修复了该问题`