【发布时间】:2012-03-26 20:56:08
【问题描述】:
我编写了一个函数,当用户尝试提交无效的电子邮件地址时,它将 ID 为“mail_not_valid”的 span 的 innerHTML 设置为“看起来不正确”。工作正常。另一个函数清除输入字段并由 onfocus 触发。第三个函数由 onblur 触发,并在用户未输入任何内容时将输入字段重置为其原始值。现在问题来了:如果用户点击该字段(->cleared),输入了一个无效的电子邮件(->span 显示)然后只是删除他的条目并离开表单,span 仍然存在。
现在当我替换 document.getElementById("mail_not_valid").innerHTML = "";有了警报,警报就会出现。但是,更改 innerHTML 不起作用。
编辑:我是个白痴,如果用户已经写了一些东西,它就无法工作:if (!(feld.value))
<input onblur="OnBlurCondition (this, 'subscribe to the e-mail newsletter')">
<script language="javascript">
function OnBlurCondition (feld, inhalt) {
if (!(feld.value)){
feld.value = inhalt;
if (document.getElementById("mail_not_valid").innerHTML == "that doesn't seem right."){
document.getElementById("mail_not_valid").innerHTML = "";
}
}
}
</script>
【问题讨论】:
-
不确定这是否只是一个错字,但在您的示例中,您使用的是比较运算符 (
==) 而不是赋值运算符 (=)。 -
HTML 中是否真的包含一个 id 为
mail_not_valid的元素?控制台有错误吗? -
您是否尝试过提醒或使用 console.log( document.getElementById("mail_not_valid").innerHTML 以确保它等于您的比较结果?在这种情况下,如果您有空格/换行符等它会抛出比较,除非它们完全匹配。
-
啊,是的,斯科特明白了,哈哈,很好,我不知道我是怎么错过的:P 他是对的。在该行将 == 更改为 =,它可能会起作用,哈哈
标签: javascript innerhtml onblur