2012-06-11 71 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等)