2011-09-20 53 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