2012-04-25 108 views
0

我正在检查名称文本字段是否为空。如果是,那么我想显示一个说“请输入你的名字”的div。我做了一个测试,并且name ='name'。但在此之后,没有别的东西出现了。javascript if else声明错误

function validate(input, name) { 
if(name=='name') { 
     if(input==null || input=="") { 
      name.style.visibility='visible'; 
      alert("please enter a value"); 
     } else { 
      alert("valid entry."); 
     } 
    } 
} 

当我打印输出与警告框,它不包含任何东西;所以我知道它是null或“”。我如何解决这个问题,以便它工作?

这里是我的文本字段:

<input type="text" name="name" id="name" onblur="javascript: validate(this.value, this.id);" required /> 
    <div id="name" style="visibility:hidden; float:right;">Please fill in a name!</div> 
+4

name =='name'在稍后作为对象引用时没有意义。 – h0tw1r3 2012-04-25 23:29:25

+3

显示您的HTML,显示正在分配变量'name'的位置。然后[向我们展示一个有代表性的演示](http://jsfiddle.net/);我们正在寻找[SSCCE(Short,Self-Contained,Correct/Compilable Example)](http://sscce.org/)。 – 2012-04-25 23:29:50

+0

@DavidThomas - 尼斯链接! – 2012-04-25 23:30:22

回答

1

javascript:协议,只有当你在一个网址了Javascript使用,不要在事件处理程序使用它。

你不能有两个具有相同ID的元素。该id必须是唯一的。

在XHTML中没有没有值的属性。您应该使用required="required"而不仅仅是required

您不必检查null的值。文本字段的值不会为空。

使用getElementById方法来查找其ID的元素。

function validate(input, name) { 
    if (name == 'name') { 
    if (input == '') { 
     document.getElementById('nameInfo').style.visibility = 'visible'; 
     alert("please enter a value"); 
    } else { 
     alert("valid entry."); 
    } 
    } 
} 

<input type="text" name="name" id="name" onblur="validate(this.value, this.id);" required="required" /> 
<div id="nameInfo" style="visibility:hidden; float:right;">Please fill in a name!</div> 
+0

+1,但是您认为OP使用XHTML的原因是什么?没有DOCTYPE,真正的XHTML在网络上是非常罕见的。类似XML的标记不是一个可靠的指标。最好告诉OP删除伪造的SHORTAG。 – RobG 2012-04-26 00:18:19

+0

@RobG:它基于自我封闭的输入标签。希望OP知道他是否使用XHTML,以便他知道这一点是否相关。 – Guffa 2012-04-26 00:27:46

+0

我只用了,因为我在html 5中看到它 – droidus 2012-04-26 03:19:19