0

我写了一些代码,可以让我在输入表单上显示一些灰色的文本,当用户关注它时,文本将消失并变为非灰色,如果这有意义的话......

function editableAlt (elem, colour1, colour2) {
    var elem = document.getElementById(elem);
    elem.onfocus = function () {
        if(this.value == this.defaultValue) {
            this.value = ""; // remove the default text, so the user can enter their own
            this.style.color = "#" + colour1; // change the text colour 
        }
    };
    elem.onblur = function () {
        if(this.value == '') {
            this.value = this.defaultValue; // user left it blank? revert back to the default text
            this.style.color = "#" + colour2; // and change the colour back too
        }
    }
}

这适用于大多数页面,但出于某种原因,onfocus 和 onblur 根本不起作用 - 例如,如果我将其更改为 onclick,它不会触发任何问题。

还有什么我可以尝试的吗?:( 我正在使用 JQuery,但删除它似乎根本没有影响。

干杯

4

2 回答 2

3

我发现 IE 在涉及 javascript 错误时非常无情。我通过 jslint 运行您的代码并得到以下错误:


错误:第 2 行字符 14 处的问题:'elem' 已定义。

var elem = document.getElementById(elem);

第 10 行字符 23 处的问题:使用 '===' 与 '' 进行比较。

if(this.value == '') {

第 14 行字符 6 处的问题:缺少分号。

}

隐含全局:文档 2


不要试图吝啬帮助你或任何事情,但我猜如果你修复了这些错误,你会看到更理想的结果。祝你好运!

于 2009-09-25T14:55:14.917 回答
0

真是个白痴,对不起各位!我尝试删除所有其他 Javascript 文件,但错过了最重要的一个,即它被包裹在 PHP 和 IE if 语句中,d'oh!

正在应用 Suckerfish sfFocus 导致其中断:http ://htmldog.com/articles/suckerfish/shoal/

抱歉 :( 非常感谢您的建议

于 2009-09-28T14:33:03.557 回答