0

これについてすべてのグーグルとスタックオーバーフローの結果を試した後、私はあなたの助けを求めることにしました.

Symfony2 アプリを作成しています。アプリのすべてのビュー内に、提案/質問メールを送信するフォームを含む Twitter ブートストラップ モーダル要素を含めています。したがって、基本の twig テンプレートから、この非表示のモーダルを含めます。

モーダルの表示/非表示は問題なく機能します。モーダルには、必要に応じてフォームが含まれています。

ここから達成しようとしているのは、フォームの AJAX 送信、コントローラーでのメール送信、ビューへの応答です。その応答はjsonであり、モーダルのhtmlを「* dismiss_button *」+「メール送信」OR「問題が発生しました」に変更する成功関数。

かなり単純なようです。まあ、そこにあるほとんどの解決策を試した後、フォームの送信を防ぐことはできません. だから私はそれを本当に本当にシンプルに保つことに決めました.

ここでは、モーダル コード:

<!-- Modal -->
<div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
    <h3 id="myModalLabel">Send your suggestion</h3>
</div>
<div class="modal-body">
    {% if is_granted('ROLE_USER') %}<p>We will reply to {{ app.user.mail }}</p>
    {% else%}<p>Don't forget to include a reply-to email in your suggestion.</p>
    {% endif %}
    <form action="{{ path("mgfbc_arrt") }}" method="post" id="arrt">
        <div class="control-group">
            <label for="username">Text:</label>
            <div class="controls">
                <textarea id="mail" name="mail" rows="4" style="width:500px;"></textarea>
            </div>
        </div>
        <div class="modal-footer">
            <input type="submit" id="butt" class="btn btn-success" value="Send">
        </div>
    </form>
</div>

そして、JS:

<script type="text/javascript">
$("#butt").on('click', function(e) {
e.preventDefault();
});
</script>

すべてを試した後、この JavaScript がフォームの送信を妨げないところまで到達しました。

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

前もって感謝します。

4

3 に答える 3

0

on() 関数を使用しないでください。代わりにデリゲートを使用してください。これを試してください。

$("#arrt").delegate("#butt", "click", function(e){
  e.preventDefault();              
});
于 2013-06-12T23:29:01.693 に答える