您是否可以使用JQuery的延迟方法来检测所有已更改的表单并将每个表单作为Ajax帖子提交?
如果我只列出一大堆表单提交但是如果我使用...
,我可以得到同样的工作$('form.changed').each(function(){
return $(this).submitWithAjax();
});
我正在尝试使用的更完整版本的代码就在这里...... at JS Fiddle
提前致谢!
答案 0 :(得分:17)
而不是“.each()”,请使用“.map()”:
var deferreds = $('form.changed').map(function(i, elem) {
return $(this).submitWithAjax();
});
$.when.apply(null, deferreds.get()).then(function() { ... });
“$ .when()”允许你捆绑一堆延迟对象并等待它们全部成功(或任何失败 - 注意那里的差异)。它通常允许任意数量的参数,但由于我们有一个数组,我使用了“apply()”。
请注意,我只是轻易使用这些东西,所以请阅读jQuery API文档以仔细检查:-) 编辑 - 在重新阅读您的问题时,我可能误解了您。< / p>
答案 1 :(得分:0)
将更改事件委派给表单字段可以解决您的问题。
$('form').delegate('input[type=text], input[type=radio], select', 'change',
function(evt){
// your submits here
console.log('changed!')
});