Javascript 当MVC3 Html.textbox的内容发生更改时提交表单

Javascript 当MVC3 Html.textbox的内容发生更改时提交表单,javascript,asp.net-mvc-3,razor,asp.net-ajax,Javascript,Asp.net Mvc 3,Razor,Asp.net Ajax,这应该是相当容易的,但我已经尝试了一些事情没有运气 我在一个页面上有一系列的Html.TextBoxFor字段,每个字段都在自己的Ajax.BeginRouteForm中。在每个框旁边,我都有一个提交按钮,单击该按钮时,会根据需要执行Ajax更新 我希望自动执行此操作,以便当用户更改字段中的值时(更改onchange事件),表单的提交方式与当前使用的提交按钮相同 我尝试使用htmlattributes为onchange事件分配一个JavaScript函数(如下所示),这会导致表单提交,但它会重定

这应该是相当容易的,但我已经尝试了一些事情没有运气

我在一个页面上有一系列的
Html.TextBoxFor
字段,每个字段都在自己的
Ajax.BeginRouteForm
中。在每个框旁边,我都有一个提交按钮,单击该按钮时,会根据需要执行Ajax更新

我希望自动执行此操作,以便当用户更改字段中的值时(更改
onchange
事件),表单的提交方式与当前使用的提交按钮相同

我尝试使用htmlattributes为
onchange
事件分配一个JavaScript函数(如下所示),这会导致表单提交,但它会重定向页面,而不是以ajax方式工作(而不是单击正常工作的提交按钮)

(幸运的是,我的
answer.AnswerID
是数字的,并且与表单集合中相应表单的数字位置相匹配;我是按名称引用它们的,但Razor(或其他东西)是对我的JavaScript代码进行htmlencoding…)


我唯一的猜测是,通过将代码直接附加到
onchange
事件,我正在破坏某些东西,但我不知道如何“正确”地连接到该事件链中

如果您愿意使用JQuery,它非常简单:

在表单上调用
submit()
将忽略任何
submit
事件处理程序。你也可以

  • ,或

  • 如果使用
    onsubmit
    并返回
    false
    而不是使用
    event
    参数进行回调,则前者效果最好,因为否则需要传递另一个凌乱的对象或其他东西。

    请随意详细说明:)
    @(Html.TextBoxFor(model => answer.Value, new { onchange = "document.forms[" + answer.AnswerID + "].submit()" }));