2016-04-19 9 views
0

この問題はたくさん聞かれましたが、私はWordpressで動作するjQueryを取得できません。jQueryスクリプトはWordpressで動作しません

私はいくつかのwp_ajaxで使用されるフォームを持っていますが、この時点までにjQueryとやり取りできるようにしたいと考えていました。

フォームHTMLをページ上に配置し、このようになりますされています。私は、私は私のメインのphpのために使っていたプラグインを作成してい

<div id = "content"> 
    <form action= "" method= "post" id= "hfwpform"> 
     <label for= "fname">First Name</label></br>  
     <input type= "text" name= "fname" id= "fname" required></br> 
     <label for= "email">Email Address</label></br> 
     <input type= "email" name= "email" id= "email" required></br> 
     <label for= "message">Your Message</label></br>  
     <textarea name= "message" id= "message"></textarea> 
     <input type= "hidden" name= "action" value= "contact_form"> 
     <input type= "submit" value= "Send"> 
    </form> 
    </br></br> 
    <div id= "feedback">My Feedback</div> 
    </br></br> 
</div> 

。 このプラグインでは、エンキュー行を作成しました。

add_action('wp_enqueue_scripts', 'load_scripts'); 

function load_scripts() { 

    if (!is_admin()) { 

     wp_register_script('hftest', get_template_directory_uri() . '/js/hf_test.js', array('jquery'), '1.0', false); 
     wp_enqueue_script('hftest'); 
    } 
} 

"js"という名前のスクリプト用のサブフォルダを作成しました。フォームを送信するときに実行するスクリプトは次のようになります。

(function($) { 
    $(document).ready(function() { 
     $('#hfwpform').submit(function() { 
     $response = "This is it!!!"; 
     alert("Submitted"); 
     $("#feedback").text($response); 
     }); 
    }); 
})(jQuery); 

私は、フォームページのリロードが入力フィールドをクリアする代わりに、フィードバックテキストを変更し、アラートボックスを表示を提出します。

私は間違って何をしていますか?

よろしく フレミングあなたのフォームが正常に機能している

+0

は、スクリプトが呼び出さなっていることを確認するためにチェックしましたか?デベロッパーコンソールにエラーがありますか?また、文書の準備ができた関数を短い文書の準備関数の中に入れて、最初に '$'がありません。 – APAD1

+0

簡略化されたドキュメント対応の関数は、jQuery接頭辞を使用することなく、wordpressから$を解放します。 – admcfajn

答えて

2

。あなたが欠けているのは、デフォルトの機能を使ってフォームを実行しないようにj内で指定することです。

あなたのコードは次のようになります。

(function($) { 
    $(document).ready(function() { 
     $('#hfwpform').submit(function(e) { 
     e.preventDefault(); //this is key 
     $response = "This is it!!!"; 
     alert("Submitted"); 
     $("#feedback").text($response); 
     }); 
    }); 
})(jQuery); 
+0

あなたの男。 リロードの問題を解決しました。 私は実際には、jsフォルダが見つからなかったという別の問題がありました。 Wordpressは、プラグインパスの代わりにThemeパスを出発点として使用していました。だから私はこのようなsomthngへの道を変えなければならなかった: ../../../plugins/my-plugin/js/hf_test.js –

+0

これをより良い方法で修正する方法を偶然知っていますか? –

+0

驚くばかり!あなたがそれを得てうれしい。 $ _SERVER ["DOCUMENT_ROOT"]を使用できます。 "/等々"。または、チェックアウトhttps://codex.wordpress.org/Function_Reference/get_home_path。 – jlemm45

関連する問題