2011-09-20 81 views
0

我有一个表格,看起来像这样需要使用JavaScript或jQuery的一个表单提交帮助

@using (Html.BeginForm("ActionMethod","MyController FormMethod.Post)) { 
<button type="submit" value="Generate" name="action" class="button" id="btnGenerate">Generate Form</button> 
<button type="submit" value="Confirm" name="action" class="button" id="btnConfirm">Confirm</button> 
} 

和我的JavaScript看起来像这样

<script type="text/javascript"> 
    $(function() { 

     var genOverlay = jQuery('<div id="overlay"><div class="innerblock box-shadow"><p>Please remember to print the registration form and sign both copies.</p><div><a id="btnClose" href="#" class="button">Close</a></div></div>'); 

     var confirmOverlay = jQuery('<div id="overlay"><div class="innerblock box-shadow"><p>Changes can not be made to this record once it has been confirmed. Are you sure you would like to confirm this form?</p><div> <a id="btnConfirmConfirmation" href="#" class="button">Confirm</a> <a id="btnCancel" href="#" class="button button-red">Cancel</a></div></div>'); 

     $('#btnGenerate').click(function() { 
      genOverlay.appendTo(document.body); 
      return false; 
     }); 

     $('#btnConfirm').click(function() { 
      confirmOverlay.appendTo(document.body); 
      return false; 
     }); 


     $('#btnConfirmConfirmation').live('click', function() { 
      // Need help on submitting the form with the input button value of btnConfirm. 

      // $('#btnConfirm').submit(); does not work 
      // return true; 
     }); 

     $('#btnClose').live('click', function() { 
      genOverlay.remove(); 
     }); 

     $('#btnCancel').live('click', function() { 
      confirmOverlay.remove(); 
     }); 
    }); 
</script> 

我将如何去实现btnConfirmConfirmation点击覆盖只需提交表单通常的“确认”的行动值?

感谢所有帮助

回答

1

submit是表单元素的事件处理程序。这应该工作:

$('#btnConfirm')[0].form.submit() 
//All form elements have a property called "form" which refers to the parent form 

如果你连接标识符到您的表单,使用此:

$('#formId').submit();    //<form id="formId" ... 
$('form[name="formName"]').submit(); //<form name="formName" ... 
+0

嗨,罗布,你碰巧知道我应该如何通过表单提交按钮“btnConfirm”的价值? – zSynopsis

+0

是的。改变元素的'type'属性:'$(“#btnConfirm”)。attr(“type”,“hidden”);'。当表单被提交时,最多传递一个按钮元素:点击具有名称属性的“submit”按钮。 –

2

.submit()方法仅适用于<form>元素。你可以一个ID添加到您的形式:

<form id="myForm" ...> 

哪像你使用的HtmlHelper创建,将与来实现:在

@using (Html.BeginForm("ActionMethod","MyController", FormMethod.Post, new { id = "myForm" })) { ... 

,然后调用提交方法(记录here)即:

$('#btnConfirmConfirmation').live('click', function() { 
    $('#myForm').submit(); 
}); 

或者你可以通过查找按钮的最近的祖先表单元素去的形式为您的按钮:

$('#btnConfirmConfirmation').live('click', function() { 
    $(this).closest('form').submit(); 
}); 

closest方法记录在here

+1

您的方法是一种很好的方法,但是表单是使用HTML助手构建的,所以您必须添加'new {id:“myForm”}'作为参数,而不是'

'。你也应该链接到http://api.jquery.com/submit/ – StuperUser

+0

好主意,编辑我的答案,以适应。谢谢。 – Kasaku

+0

如何在提交表单中传递按钮“btnConfirm”的值? – zSynopsis