1

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

<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 的新手,所以任何有帮助的东西都会很棒。谢谢。

4

2 回答 2

3

由于某些古老版本的 Internet Explorer 实现的行为,在“怪癖”模式下,大多数浏览器将允许您直接通过其 id 来寻址元素。

例如

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

我想这就是你正在发生的事情。你有一个带有 id 的元素checkpw和一个名为checkpw. 我认为,由于该元素是稍后在文件中定义的,因此它胜出,并且由于它不是一个函数,因此尝试在您的onfocus处理程序中调用它是行不通的。

要么改变你的函数的名字,改变id元素的名字,或者(最好)确保你的页面没有以“怪癖”模式呈现(例如正确的文档类型,没有无效的 HTML 等)

于 2012-06-11T00:29:06.070 回答
0

:更改function checkpw() :function checkPw()
:更改focus="checkpw()" :focus="checkPw()"


编辑:
不是保留字;但是该名称已经在全局命名空间中被污染了。正如Domenicjimr 所指出的,该id属性使用相同的名称,从而导致了冲突的条件。

解决方案仍然是更改:(1)id输入元素的值 - 或 - (2)函数名称(如上所述)

于 2012-06-11T00:21:18.763 回答