我有一个包含多个表单的页面。这些表单使用数据属性 data-remote =“true 这样Rails jquery-ui-rails.js会自动添加事件以通过javascript提交这些表单。
当用户提交任何这些表单时,我想添加一个类,以便我可以根据需要设置它。由于Rails自动添加ajax处理程序来提交表单,我不能在添加处理程序时添加此类 - 我需要手动为此添加代码(我认为)。
以下代码是我的第一次尝试 - 这很好,但是由于ajaxStart是一个全局事件,它会同时为页面上的每个表单触发它。
$('form').ajaxStart(function(e) {
console.log("element is " + ($(e).attr('id')));
return $(e).addClass('submitting');
})
我已经尝试过发送,因为根据http://docs.jquery.com/Ajax_Events这是一个本地事件,似乎是唯一相关的事件:
$('form').beforeSend(function(e) {
console.log("element is " + ($(e).attr('id')));
return $(e).addClass('submitting');
})
但是,这会引发错误:
Uncaught TypeError: Object [object Object] has no method 'beforeSend'
如何将此事件附加到我页面上的所有表单中,以便每次ajax提交时触发一次,并且仅针对当前提交的表单?
答案 0 :(得分:1)
我认为您可以使用ajax:beforeSend.rails
和ajax:complete.rails
个事件:
https://github.com/rails/jquery-ujs/blob/8b147fb023f0d13deebea750e7e9827b6d3bc8ba/src/rails.js#L405