我正在使用asp.net mvc和jquery开发一个Web应用程序。我在我的第10页表单中,我正在使用jquery(实时事件)进行同步提交。像这样:
一切正常,但我需要用图像格式化Div,当用户点击这个div我需要提交表单,但是...表单没有像提交按钮那样执行assync操作。它正在执行默认行为......
我的div是这样的:
我的剧本:
$("#jobs form").live('submit', function() {
$.post($(this).attb('action'), $(this).serialize(), function(result) {
//get and format result in my content divs...
});
});
我的HTML:
<div id="jobs">
<% foreach(var job in Model) { %>
<form ...>
<!-- hide this button -->
<input type='submit' class='hide' id='mysubmitButton_<%=job.Id%>' />
<!-- need to submit this form -->
<div class='buttonImage' onclick="$('#mysubmitButton_<%=job.Id%>').click();"></div>
</form>
<% } %>
</div>
如何设置'onclick'来执行同步提交,例如我页面中的提交按钮?
我不知道如何格式化这个按钮,所以我正在使用div或超链接......
由于
答案 0 :(得分:1)
首先,您有$.post($(this).attb('action'), ...
。这不起作用 - 函数为attr
,因此您需要$.post($(this).attr('action'), ...
。更好的方法是避免使用jQuery对象并使用$.post(this.action, ...
。
对于您的提交图片,以下代码应该有效:
$('.buttonImage').live('click', function(){
$(this).closest('form').submit();
});
这将找到父表单并在其上调用submit
操作,这将触发您在问题中定义的处理程序。
请注意,您似乎没有阻止发生默认操作。您需要在表单上调用live
方法,如下所示:
$("#jobs form").live('submit', function(e) {
e.preventDefault();
// do the rest of your code
}
这可以防止发生默认提交操作。