【问题标题】:Submit form when contents of MVC3 Html.TextBoxFor changes当 MVC3 Html.TextBoxFor 的内容发生变化时提交表单
【发布时间】:2011-10-15 07:55:30
【问题描述】:

这应该很容易,但我尝试了一些没有运气的事情。

我在一个页面上有一系列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(或其他东西)正在对我的 JavaScript 代码进行 htmlencoding...)

我唯一的猜测是我通过将代码直接附加到onchange 事件来破坏某些东西,但我不知道挂钩到该事件链的“正确”方式。

【问题讨论】:

    标签: javascript asp.net-mvc-3 razor asp.net-ajax


    【解决方案1】:

    【讨论】:

    • 请详细说明:)
    【解决方案2】:

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

    1. call the event handler directly,或
    2. call click() on the submit button for the form

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      • 2013-09-14
      • 2014-02-22
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      相关资源
      最近更新 更多