5

我正在尝试使用 Mvc 中 Ajax.BeginForm 助手的 OnBegin 和 OnComplete 例程来处理表单 dom 元素。

目前我有这个:

@using (Ajax.BeginForm("Contact", "Home", new AjaxOptions { OnBegin = "handleOnBegin" }))

但是在 OnBegin / OnComplete 处理程序中,我想使用表单 dom 元素 - 这可能吗?我检查了传递给这些处理程序的参数,但我什么也看不到。

function handleOnBegin(a, b){
  var f = <get form>;
  animateForm(f);
}

我什至尝试过使用处理程序传递“this”,但这似乎只传递了 XHR 对象(或类似的东西)......另外,我不愿意通过传递 id 并添加更多代码,因为我确信有一个更简单的方法。

4

3 回答 3

6

表单的 ID 作为 Ajax.BeginForm 的第四个参数:

@using (Ajax.BeginForm("Contact", "Home", 
        new AjaxOptions { OnBegin = "forms.onBegin", OnComplete = "forms.onComplete" },
        new { id = "FormName" }))

然后您可以按 ID (#FormName) 选择表单。

编辑:

或者查看这个问题的答案

于 2011-07-30T16:08:23.810 回答
1

我也查看了这些论点,但看不到任何开箱即用的帮助。另一种选择是向您的库中添加一个函数,该函数将为您页面上的按钮添加一个 onclick 事件处理程序。就像是

var clickedBtnID = null;
$(document).ready(function()) {
    $(input[type=submit]).click(function() {
        clickedBtnID = $(this).attr("id");
    }
}

然后你可以clickedBtnID从你的回调函数中访问。不是一个完美的解决方案,但它可能足够通用。

于 2011-07-31T10:45:46.007 回答
0

为要使用的 DOM 元素提供 CSS 类。因此,您可以通过 CSS 类找到元素,即使表单是部分的,例如嵌套在其他元素中。

像这样的东西:

$form.find(".labelToUpdate").text(response.labelText);
于 2011-07-30T16:16:41.020 回答