Отправьте форму, когда содержимое MVC3 Html.TextBox для изменений - PullRequest
1 голос
/ 28 июля 2011

Это должно быть довольно просто, но я попробовал несколько вещей без удачи.

У меня есть серия Html.TextBoxFor полей на странице, каждое внутри своих Ajax.BeginRouteForm.Рядом с каждым полем у меня есть кнопка отправки, и при щелчке по ней выполняется обновление Ajax по желанию.

Я бы хотел автоматизировать это так, чтобы, когда пользователь изменял значение в поле (onchange событие) форма отправляется так же, как в настоящее время используется кнопка отправки.

Я попытался использовать атрибуты htmlattributes, чтобы назначить функцию JavaScript для события onchange (как показано ниже), и это приводит к отправке формы, но она перенаправляет страницу вместо того, чтобы работать в режиме Ajax (в отличие отчтобы нажать кнопку отправки, которая работает правильно).

@(Html.TextBoxFor(model => answer.Value, new { onchange = "document.forms[" + answer.AnswerID + "].submit()" }));

(к счастью, мой answer.AnswerID является числовым и соответствует числовой позиции соответствующей формы в коллекции форм; я ссылался на них по имени, ноRazor (или что-то еще) htmlencoding моего кода JavaScript ...)

Мое единственное предположение, что я что-то ломаю, прикрепляя код непосредственно к событию onchange, но я в растерянности относительно«правильный» способ подключиться к этой цепочке событий.

Ответы [ 2 ]

0 голосов
/ 06 января 2013

Вызов submit() в форме будет игнорировать любые submit обработчики событий, , как показано здесь .Вы можете либо

  1. вызвать обработчик событий напрямую , либо
  2. вызвать click() на кнопке отправки для формы .

Первый работает лучше всего, если вы используете onsubmit и возвращаете false вместо аргумента event для обратного вызова, потому что в противном случае вам нужно передать другой грязный объект или что-то еще.

0 голосов
/ 28 июля 2011

Если вы хотите использовать JQuery, это очень просто сделать:

http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/

...