0

我有一个 mvc3 Ajax.BeginForm。我不想单击按钮,而是希望 JavaScript 从文本框之一的 onblur 事件中单击按钮。

我已经尝试了下面的代码,也只是用 $('#submitEmail').click(); 调用了一个函数 在里面。提交有效,我收到了回复,但问题出在控制器 Request.IsAjaxRequest() 为假。当我自己单击按钮时,Request.IsAjaxRequest() 为真。

@Html.TextBoxFor(model => model.LeadEmail, new { onBlur = "this.form.submit();" })

是的,我已经检查过使用 JavaScript 触发器时不存在提琴手 X-Requested-With 。我怎样才能让它在 onBlur 事件上提交表单并获得正确的 ajax 标头?

4

3 回答 3

1

我想在 Tigra 的回答中添加一些内容:

<script type="text/javascript">
    function FormAjaxSubmit() {
        var f = $("form").serialize();
        $.ajax({
            url: "/Control/Action",
            type: "POST",
            data: { formCollection: f },
            success: function (result) {
                $('#resultDiv').html(result);
            }
        });
    }
</script>
于 2012-06-08T08:47:33.910 回答
1

所以我不确定为什么我尝试的方式不起作用。我认为它应该工作的方式。我按下按钮或按下按钮的代码应该是一样的。显然是有区别的。也许有这方面知识的人可以告诉我们。但解决方案是实际做一个 ajax 帖子。

<script type="text/javascript">
function FormAjaxSubmit() {
    var someThing = $("#SomeThing").val();
    $.ajax({
        url: "/Control/Action",
        type: "POST",
        data: { SomeThing: someThing },
        success: function (result) {
            $('#resultDiv').html(result);
        }
    });
}
</script>
于 2012-06-08T01:13:47.783 回答
0

在表单上调用提交方法本质上与单击表单的提交按钮相同,当您这样做时,浏览器会根据方法属性中定义的方法类型(GET/POST)进行请求。

调用 submit 不是 ajax 请求,它是一个表单提交,它会重新加载整个页面,这就是它不起作用的原因。

于 2012-06-08T07:43:22.490 回答