0

在为此尝试了每个 google 和 stackoverflow 结果之后,我决定寻求您的帮助。

我正在构建一个 Symfony2 应用程序。在我的应用程序的每个视图中,我都包含一个 twitter 引导模式元素,以及一个发送建议/问题邮件的表单。所以,从我的基本树枝模板中,我包含了这个隐藏的模式。

模态显示/关闭工作得很好。Modal 根据需要包含我的表单。

我想要从这里实现的是:表单的 AJAX 提交,控制器中的邮件发送,对视图的响应。该响应为 json,并且成功函数将模式的 html 更改为“*dismiss_button*”+“已发送电子邮件”或“有问题”。

看起来相当简单。好吧,在尝试了大多数解决方案之后,我无法阻止表单提交。所以我决定让它变得非常简单。

这里,模态代码:

<!-- 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

1

@gomman 检查以下文档:http ://api.jquery.com/submit/ 我认为您需要取消表单元素的提交事件以使其按您想要的方式工作。

@Fuser 虽然delegate() 对我来说更具可读性,但在这种情况下使用 on() 或 delegate() 也会做同样的事情。引用 jQuery 文档“从 jQuery 1.7 开始,.delegate() 已被 .on() 方法取代。然而,对于早期版本,它仍然是使用事件委托的最有效方法。”

于 2013-06-23T20:59:17.973 回答
1

试试这个:

<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>
<script type="text/javascript">
$("#arrt").submit(function(e) {
    e.preventDefault();
});
</script>
于 2014-03-06T15:10:41.573 回答
0

不要使用 on() 函数,而是使用委托,试试这个:

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