提交包含相关直播活动的表单

时间:2010-11-08 11:00:48

标签: javascript asp.net-mvc javascript-events jquery

我正在使用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或超链接......

由于

1 个答案:

答案 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
}

这可以防止发生默认提交操作。