2012-09-20 60 views
-1

所以我有this,它工作,一切都很好。 然後我試圖改變爲this,這一切都出錯了。 我是否以錯誤的方式定義函數?對不起,我是新來的JS & jQ(雖然我假設這只是基本的JavaScript而不是與jQuery相關的任何東西)在javascript/jQuery中定義函數

編輯:此外,MAILTO:href不工作?我試過了,沒有收到電子郵件......無論如何,謝謝!

+0

請更正您的問題,以更好地解釋「this」和「this」是什麼。 – skunkfrukt

+0

您的配色方案令人印象深刻:| –

+0

你還沒有說什麼exactyl沒有工作。首先檢查調試器控制檯是否有輸出錯誤。您也可以在小提琴中使用JSLINT按鈕來檢查您的代碼。之後,要麼恢復你的改變,並逐一應用,在兩者之間進行測試。或者將'console.log()'添加到您的新代碼中,以檢查選擇器,變量以及可能會破壞新代碼的其他所有內容。如果你有definet錯誤重新短語你的問題,而不是一個空白的請求「它不工作,你能解決它」。 – Nope

回答

4

你應該改變這些:

$("#name").focusout(checkName()); 

$("#name").focusout(checkName); 

你要分配函數本身focusout處理器,而是你要指定無論函數返回作爲處理程序。

另外,mailto: URL方案不發送電子郵件。它會在訪問者的機器上打開任何本地郵件客戶端被定義爲此方案的處理程序,並開始組成一條發往該URL地址的新郵件。

+2

哦,我的天啊,我是個白癡。謝謝! –

2

傳遞函數名稱,而不是執行函數的結果。

$("#name").focusout(checkName); 
$("#pass").focusout(checkPass); 
$("#pass2").focusout(checkPass2); 
+0

與lanzz的回答一樣,謝謝! :d –

2

加入你的函數名var盈(不是完全必要的,但阻止他們是全球):

var checkName = function(){ 

,然後將它們傳遞給事件綁定功能,而(),因爲這是運行函數並傳遞結果而不是傳遞實際函數本身:

$("#name").focusout(checkName); 

這應該可以解決問題。

http://jsfiddle.net/infernalbadger/Hxnv5/6/

此外,mailto:鏈接工作正常。它應該打開您的默認電子郵件客戶端。