AJAX ведет себя по-разному для кнопки Отправить по сравнению с this.form.submit? - PullRequest
0 голосов
/ 16 июля 2009

Я пытаюсь автоматически сохранить выбор в раскрывающемся списке (ASP.NET, MVC, VB), но он не работает, как ожидалось. Вот фиктивное действие в контроллере:

<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 ()» не делает то же самое, что кнопка «Отправить»? Должен ли я сделать другой вызов для эмуляции кнопки «Отправить»?

Ответы [ 2 ]

1 голос
/ 16 июля 2009

this.form.submit не запускает событие form.onsubmit. С другой стороны, нажатие кнопки подтверждения. Это, в сочетании с HTML-кодом, который Ajax.BeginForm генерирует , объясняет, почему они ведут себя по-разному. Что касается того, как заставить ваше событие делать то же самое, что и нажать кнопку «Отправить», посмотрите HTML-код в связанной статье:

Sys.Mvc.AsyncForm.handleSubmit(
         this,
         new Sys.UI.DomEvent(event),
         { 
             insertionMode: Sys.Mvc.InsertionMode.replace,
             updateTargetId: 'test' 
         });
0 голосов
/ 07 мая 2014

Я знаю, что это старый, но есть новый (и лучший) способ сделать это.

Вместо использования javascript используйте jQuery. Просто была эта проблема, и она отлично работала.

this.form.submit() <---- Javascript </p>

$("form").submit() <---- jQuery </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...