1

我将展示一些我的代码。在我看来,我有一个 HTMLForm,我想将它与 Ajax 一起使用。

查看以下代码进行提交。

var editQuestionFormSubmit = function () {
    $.ajax({
        url: this.action,
        type: this.method,
        data: $(this).serialize(),
        success: function (result) {
            $('#target2').html(result);
            //$("#editQuestionForm").submit(editQuestionFormSubmit);
        }
    });
    return false;
};

var editQuestion = function () {
    $.ajax({
        url: this.href,
        type: "get",
        success: function (result) {
            $("#target2").html = result;
            $("#editQuestionForm").submit(editQuestionFormSubmit);
        }
    });
    return false;
};

editQuestion功能是用户第一次单击超链接时,结果包含一个表单,这就是我将其设置为提交事件的原因。

现在,当用户发布帖子时,让我们假设它没有经过验证,所以我再次显示相同的表单,但使用当前模型

    public ActionResult EditQuestion(QuestionTemplate qt)
    {
        if (ModelState.IsValid)
        {
           ....
           return ...
        }

        return PartialView("_EditQuestion", qt);
    }

因此,最后一个代码我返回相同的表单,但显示要验证的错误,并且我必须再次注册提交事件处理程序。我是在做一个好方法还是有更好的方法不在每个回调中注册每个事件处理程序。

4

1 回答 1

0

达夫,

submit事件的情况下,不能将处理委托给祖先元素,因为事件不会冒泡。这否定了您处理由动态添加的元素引起的事件的首选方法。

因此,使用您的验证方法,submit每次替换表单时都必须附加事件处理程序。

但是,您应该能够避免这样做的需要,方法是仅替换表单的内容(its ),在文档中.html()保留一个原始的硬编码元素。<form>

于 2013-03-05T01:28:30.857 回答