您有没有想过如何使用JQuery的延迟方法来检测所有更改的表单,并将每个表单作为Ajax提交?
如果我只列出一堆表单提交,我也可以让它们工作,但是如果我使用...
$('form.changed').each(function(){
return $(this).submitWithAjax();
});
这是我试图让其正常运行的代码完整版本... 在JS Fiddle上查看 提前感谢!
您有没有想过如何使用JQuery的延迟方法来检测所有更改的表单,并将每个表单作为Ajax提交?
如果我只列出一堆表单提交,我也可以让它们工作,但是如果我使用...
$('form.changed').each(function(){
return $(this).submitWithAjax();
});
使用 ".map()" 而不是 ".each()":
var deferreds = $('form.changed').map(function(i, elem) {
return $(this).submitWithAjax();
});
$.when.apply(null, deferreds.get()).then(function() { ... });
"$.when()" 允许您将一组deferred对象捆绑在一起,并等待它们全部成功(或任意一个失败 - 注意区别)。通常它允许任意数量的参数,但由于我们有一个数组,所以我使用了 "apply()"。
请注意,我只是轻微地使用了这些东西,因此请阅读jQuery API文档以进行双重检查 :-) 编辑 - 另外,在重新阅读您的问题时,我可能误解了您的意思。
$('form').delegate('input[type=text], input[type=radio], select', 'change',
function(evt){
// your submits here
console.log('changed!')
});