2011-07-25 20 views
6

私はこの非常に単純なjsfiddleを動作させることはできません。ボタンがクリックされたときにテストを警告することになっています。私はここで何が欠けていますか?jsfiddle question

http://jsfiddle.net/u9nG6/2/

+0

大きな説明、ありがとうございました。 – Kory

+0

シンプルなコメント: 'click'をバインドするのではなく、' submit'イベントをトラップする方が良いでしょう! –

答えて

8

あなたはノーラップ(ヘッド)に負荷方法を変更する必要があります。

JavaScriptがどのように読み込まれ、メソッドのシグネチャが読み込まれるかとは関係があります。 http://jsfiddle.net/u9nG6/11/

+1

具体的には、 'onDomReady'は関数をラップし、そのスコープ内にのみ存在します。 'no wrap 'は、関数がグローバルスコープに存在することを意味します。 –

0

あなたはjquery + ondomreadyを使用しています。これは、あなたが書いた任意のJavaScriptは、これはスコープの問題につながる

$(function() { 

}); 

内に配置されることを意味します。代わりに以下を試すことができます。

window.validateForm = function() { 
} 
2

jQueryのフレームワークは、あなたの関数はjQueryの匿名関数$(function(){ });で包み、表示されませんので、onDomReadyをロードするために選択されています。 jQueryをno wrap (head)としてロードするか、グローバルスコープで関数を定義してください。

2

hereを参照してください。

validateForm関数をグローバルスコープで定義して、そのようなHTMLで使用できるようにする必要がありました。それ以外の場合は、内の内に定義されていました。onDomReadyイベントのスコープは、そのスコープ外ではアクセスできません。

より「jQueryのっぽい」アプローチは次のようにclickイベントを処理するためにjQueryを使用することです:

$("#id_btnSubmit").click(validateForm); 

は、その提案の例についてはhereを参照してください。