2009-07-16 3 views
0

드롭 다운 (ASP.NET, MVC, VB)에서 선택 영역을 자동 저장하려고하지만 예상대로 작동하지 않습니다.AJAX는 제출 버튼과 this.form.submit에 대해 다르게 동작합니다.

<AcceptVerbs(HttpVerbs.Post)> _ 
Function TestAction(ByVal id As Integer) As ActionResult 
    Return Content(id) 
End Function 

과 HTML : 다음은 컨트롤러의 더미 행동입니다 예상대로

<script type="text/javascript" src='<%= Url.Content("~/Scripts/MicrosoftAjax.debug.js") %>'></script> 
<script type="text/javascript" src='<%= Url.Content("~/Scripts/MicrosoftMvcAjax.debug.js") %>'></script> 

<% Using Ajax.BeginForm("TestAction", New AjaxOptions With {.UpdateTargetId = "test"})%> 
<%=Html.Hidden("id", 123)%> 
<%=Html.DropDownList("actions", Nothing, New With {.onchange = "this.form.submit();"})%> 
<input type="submit" value="Submit" /> 
<span id="test"></span> 
<% End Using%> 

는 버튼의 작품을 제출 - 스팬이 "123"로 채워집니다. 다른 손으로 드롭 다운하면 "123"이 아닌 새로운 페이지가 열립니다. "this.form.submit()"이 제출 단추와 동일한 기능을 수행하지 않는 이유는 무엇입니까? 제출 단추를 에뮬레이션하기 위해 다른 호출을해야합니까?

답변

1

this.form.submit은 form.onsubmit 이벤트를 실행하지 않습니다. 반면에 제출 버튼을 누르면됩니다. 즉, the HTML that Ajax.BeginForm generates과 결합하여 왜 두 가지가 다르게 동작하는지 설명합니다. 제출 버튼을 누르면로 이벤트가 같은 일을 할 수 있도록하는 방법에 관해서는, 링크 된 문서의 HTML보고 :이 오래 알고

Sys.Mvc.AsyncForm.handleSubmit(
     this, 
     new Sys.UI.DomEvent(event), 
     { 
      insertionMode: Sys.Mvc.InsertionMode.replace, 
      updateTargetId: 'test' 
     }); 
0

하지만, 새로운 (더 나은) 방식이있다 이 작업을 수행.

자바 스크립트를 사용하는 대신 jQuery를 사용하십시오. 방금이 문제가 있었고 효과가있었습니다.

this.form.submit() < ---- 자바 스크립트

$("form").submit() < ---- jQuery를

관련 문제