Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
提交my Ajax.BeginForm的其他jQuery事件_Jquery_Asp.net Mvc - Fatal编程技术网

提交my Ajax.BeginForm的其他jQuery事件

提交my Ajax.BeginForm的其他jQuery事件,jquery,asp.net-mvc,Jquery,Asp.net Mvc,我有一个ASP.Net MVC Ajax.BeginForm,当我单击submit按钮时,它可以正确地提交和更新我的页面 问题是我需要其他事件来做同样的事情,比如当它们更改输入的文本时。附加事件确实正确地提交了表单,但它们绕过了由Ajax.BeginForm在表单标记上生成的onsubmit javascript 以下是由Ajax.BeingForm生成的表单标记: <form action="/Store/UpdateCart" method="post" onsubmit="Sys.M

我有一个ASP.Net MVC Ajax.BeginForm,当我单击submit按钮时,它可以正确地提交和更新我的页面

问题是我需要其他事件来做同样的事情,比如当它们更改输入的文本时。附加事件确实正确地提交了表单,但它们绕过了由Ajax.BeginForm在表单标记上生成的onsubmit javascript

以下是由Ajax.BeingForm生成的表单标记:

<form action="/Store/UpdateCart" method="post" onsubmit="Sys.Mvc.AsyncForm.handleSubmit(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: 'updatedContent' });"> 

关于如何让这些附加事件在提交时触发(就像我也需要它一样)有什么想法吗?

在当前的MVC测试版中,这是一个有点棘手的问题。不能使用“submit()”函数,因为它不会触发onsubmit处理程序。相反,您应该直接调用onsubmit处理程序。唯一的诀窍是调用onsubmit()时需要将参数传递给它。此参数将成为处理程序中的“event”参数(请参阅“new Sys.UI.DomEvent(event)”部分)。MVCAJAX脚本使用“event”参数来取消默认行为,当您单击Submit按钮时,Ajax工作可以不间断地进行

因此,如果您将代码更改为:

$("#ShippingType, #ViewCart .ddl").bind("change", function() { $("#ViewCartPage form").onsubmit({ preventDefault: function() {} }) });
表单字段更改时将触发onsubmit()事件。代码创建了一个“假”事件对象,该对象实现preventDefault()方法(这是MVC Ajax助手唯一使用的方法),因此不会出现错误。

更改-

bind("change", function() { $("#ViewCartPage form").submit() });
到-


决定只使用一个常规表单,然后使用jQuery.form插件,这只需2秒钟!但愿我当初就走这条路

var options = {
   target: '#updatedContent',   // target element(s) to be updated with server response 
   beforeSubmit: showRequest,  // pre-submit callback 
   success: showResponse  // post-submit callback 
        };

$('#ViewCartPage form').ajaxForm(options);

我爱jQuery的人微软可能会打破我们,但是:

function SubmitMvcAjaxForm(formName) {
    eval('var event = new Object(); event.type="keypress"; ' + document.forms[formName].attributes["onsubmit"].value.replace('(this,', '(document.forms["' + formName + '"],'));
}

我在MVC2中使用了Sichbo的答案,但我发现在MVC3中,您不再需要这些变通方法(即$(“#yourformid”).submit()现在可以用于ajax调用)。

这似乎完全停止了表单提交,并且不会触发ajax调用,因为提交不是表单的函数或属性。.ajaxForm()在jQuery中不再存在,或者从来没有。阅读我的帖子-ajaxForm在我在帖子中提到的jQuery.Form插件中。谢谢你的否决票!
var options = {
   target: '#updatedContent',   // target element(s) to be updated with server response 
   beforeSubmit: showRequest,  // pre-submit callback 
   success: showResponse  // post-submit callback 
        };

$('#ViewCartPage form').ajaxForm(options);
function SubmitMvcAjaxForm(formName) {
    eval('var event = new Object(); event.type="keypress"; ' + document.forms[formName].attributes["onsubmit"].value.replace('(this,', '(document.forms["' + formName + '"],'));
}