Javascript 表单AJAX在twitter引导模式中发送(Symfony2)
在尝试了谷歌和stackoverflow的每一个结果之后,我决定寻求你的帮助 我正在构建一个Symfony2应用程序。在我的应用程序的每个视图中,我都包含一个twitter引导模式元素,以及一个发送建议/问题邮件的表单。因此,从我的基本细枝模板中,我包含了这个隐藏模式 模态显示/解释器工作正常。根据需要,Modal包含我的表单 我试图从这里实现的是:表单的AJAX提交、控制器中的邮件发送、对视图的响应。该响应是json,一个成功函数将模态的html更改为“*dislose_button*”+“Email sent”或“有问题” 看起来相当简单。在尝试了大多数解决方案之后,我无法阻止表单提交。所以我决定保持简单 此处,模态代码:Javascript 表单AJAX在twitter引导模式中发送(Symfony2),javascript,jquery,ajax,twitter-bootstrap,modal-dialog,Javascript,Jquery,Ajax,Twitter Bootstrap,Modal Dialog,在尝试了谷歌和stackoverflow的每一个结果之后,我决定寻求你的帮助 我正在构建一个Symfony2应用程序。在我的应用程序的每个视图中,我都包含一个twitter引导模式元素,以及一个发送建议/问题邮件的表单。因此,从我的基本细枝模板中,我包含了这个隐藏模式 模态显示/解释器工作正常。根据需要,Modal包含我的表单 我试图从这里实现的是:表单的AJAX提交、控制器中的邮件发送、对视图的响应。该响应是json,一个成功函数将模态的html更改为“*dislose_button*”+“E
<!-- 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>
×
发送你的建议
{%if_被授予('ROLE_USER')%}我们将回复{{app.USER.mail}
{%else%}别忘了在你的建议中包括对电子邮件的回复
{%endif%}
正文:
而JS:
<script type="text/javascript">
$("#butt").on('click', function(e) {
e.preventDefault();
});
</script>
$(“#butt”)。在('click',函数(e)上{
e、 预防默认值();
});
在尝试了所有操作之后,我已经达到了这样一个地步:javascript不会阻止表单提交
我做错了什么
提前感谢。不要使用on()函数,而是使用委托,请尝试以下操作:
$("#arrt").delegate("#butt", "click", function(e){
e.preventDefault();
});
@gomman检查以下文档: 我认为您需要取消表单元素的提交事件,以使其按您想要的方式工作 @Fuser虽然delegate()对我来说更易读,但在这种情况下,使用on()或delegate()也可以做到这一点。引用jQuery文档“从jQuery 1.7开始,.delegate()已被.on()方法取代。但是,对于早期版本,它仍然是使用事件委派的最有效方法。”尝试以下方法:
$("#arrt").delegate("#butt", "click", function(e){
e.preventDefault();
});
<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>
正文:
$(“#arrt”).提交(功能(e){
e、 预防默认值();
});
尝试在脚本内部发出警报,并查看是否在单击时触发警报。如果未触发,则需要在模态的事件上绑定此单击事件<代码>$(“#myModal”)。在('show',函数(){
不使用委托
,它已被弃用。从jQuery 1.7开始,.delegate()已被.on()方法取代
在
上将以同样的方式工作。$(“#arrt”).on(“单击”,“对接”,函数(e){/code>