这应该相当容易,但我尝试了一些没有运气的事情。
我在一个页面上有一系列Html.TextBoxFor
字段,每个字段都位于自己的Ajax.BeginRouteForm
内。在每个框旁边,我有一个提交按钮,当单击它时,会根据需要执行Ajax更新。
我想自动执行此操作,以便当用户更改字段中的值(onchange
事件)时,表单的提交方式与当前使用提交按钮的方式相同。
我尝试使用htmlattributes为onchange
事件分配一个JavaScript函数(如下所示),这会导致表单提交,但它重定向页面而不是以ajax方式工作(而不是单击正常工作的提交按钮。
@(Html.TextBoxFor(model => answer.Value, new { onchange = "document.forms[" + answer.AnswerID + "].submit()" }));
(幸运的是我的answer.AnswerID
是数字,并且与表单集合中相应表单的数字位置匹配;我是按名称引用它们但是Razor(或其他东西)是htmlencoding我的JavaScript代码......)
我唯一的猜测是,我通过将代码直接附加到onchange
事件来破坏某些东西,但我对于挂钩到该事件链的“正确”方式感到茫然。
答案 0 :(得分:0)
如果你愿意使用JQuery,那么这很简单:
http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/
答案 1 :(得分:0)
在表单上调用submit()
会忽略所有submit
事件处理程序as seen here。你可以
click()
on the submit button for the form。如果你使用onsubmit
并返回false
而不是使用event
参数来回调,那么前者效果最好,因为否则你需要传递另一个混乱的对象。