我在使用FAPI创建的表单的提交按钮中使用#ajax。现在,当用户提交表单时,我想在通过ajax提交表单之前运行一些jQuery验证。由于#ajax阻止了与提交按钮相关的事件,例如提交,点击,mousedown,按键等。我无法使用jQuery捕获提交事件。
目前作为解决方法,我在ajax.js(misc / ajax.js)中添加了自定义代码:
Drupal.ajax = function (base, element, element_settings) {
...
beforeSubmit: function (form_values, element_settings, options) {
//my custom code
alert(1);
...
这是针对drupal最佳实践的,因为我正在攻击核心。任何人都可以帮助我从我的自定义js文件或任何其他方法来做同样的事情,以便在ajax提交之前验证内容。
答案 0 :(得分:2)
我认为以下帖子中接受的答案可以回答您的问题:How to extend or "hook" Drupal Form AJAX?
(function($) {
Drupal.behaviors.MyModule = {
attach: function (context, settings) {
// Overwrite beforeSubmit
Drupal.ajax['some_element'].options.beforeSubmit = function (form_values, element, options) {
// ... Some staff added to form_values
}
//Or you can overwrite beforeSubmit
Drupal.ajax['some_element'].options.beforeSerialize = function (element, options) {
// ... Some staff added to options.data
// Also call parent function
Drupal.ajax.prototype.beforeSerialize(element, options);
}
//...
答案 1 :(得分:0)
我把它放在附加功能
中for (var base in settings.ajax) {
Drupal.ajax[base].options.beforeSubmit = function(form_values, element, options){
console.log('call your func');
}
}
它有效!