2012-06-11 73 views
1

我不断收到这个错误,说它找不到我的JavaScript函数checkpw()。它被onfocus所调用。没有找到javascript的功能

<script type="text/javascript" > 

function checkpw() { 

alert ("working"); 

} 



</script> 
</head> 
<body> 

<h2>Welcome to our webpage.</h2> 

<p>{{ reginfo}}</p> 
<form action="/validate/" method ="get" > 
<p>Username</p> 
<input type="text" name="username" class="textbox"> </input > </br> 
<p>Password</p> 
<input class="textbox" name="password" id="password" type="text"> </input > </br> 
<p>Confirm Password</p> 
<input class="textbox" id="checkpw" type="text" onfocus="checkpw()"> </input > </br> 
<p>Email<p> 
<input class="textbox" name="email" type="text"> </input > </br> 

<input type="submit" class="button" value="Submit"> 



</form> 

</body> 

我可能做一个非常愚蠢的错误,但我是新来的JavaScript所以任何帮助将是巨大的。谢谢。

回答

0

变化function checkpw()function checkPw()
focus="checkpw()"focus="checkPw()"


编辑:
这是重服务的词;但名称已在全局名称空间中被污染。由于Domenicjimr指出,id属性使用相同的名称,从而导致冲突的条件。

该溶液仍然改变任一: (1)所述输入元件的id值 - 或 - (2)的函数名(如我如上所述)

+0

它不是保留字或功能。 – Domenic

+0

你是对的,不是。但是我确实发现了一些奇怪的事情发生在jsFiddle和'checkpw'上,改变了它的修复方式,但是之后我做了一些其他的测试,结果没有奏效。请注意,我目前正在Safari中进行测试。 – vol7ron

+0

行为的原因由@ jimr的答案解释,这是正确的,应该是公认的。 – Domenic

3

由于行为某些古老版本的Internet Explorer以“怪癖”模式实施,大多数浏览器都会让您直接通过其ID来访问元素。

E.g.

<div id="test"></div> 
<script> 
    test.innerHTML = 'Hi'; 
</script> 

我认为这是发生在你身上的事情。您有一个ID为checkpw的元素,也有一个名为checkpw的函数。我认为随着元素在文件后面定义,它已经胜出,并且因为它不是函数,所以试图在你的onfocus处理程序中调用它是行不通的。

要么改变你的函数的名称,更改元素的id,或(更优选),确保你的网页是不是在“怪癖”模式渲染(如适当的doctype,没有无效HTML等)