首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么ajax按钮调用submitForm?

为什么ajax按钮调用submitForm?
EN

Drupal用户
提问于 2019-08-20 20:03:00
回答 1查看 55关注 0票数 1

在除按钮之外的每个表单元素中使用Ajax都没有问题。当我点击这个按钮

代码语言:javascript
复制
  '#type' => 'submit',
  '#ajax' => [
    'callback' => '::ajax_function',
    'wrapper' => 'my-button-wrapper',
  ],

它会重新加载页面..。它可以执行正常提交按钮所做的操作--调用submitForm()。我不需要这个。我只需要这个按钮来调用ajax_function()

EN

回答 1

Drupal用户

回答已采纳

发布于 2019-08-21 01:52:10

在Drupal中,除非将自定义处理程序附加到单击的submit按钮,否则将始终调用表单定义的submitHandler()方法。对于#ajax按钮,您可以添加自己的自定义处理程序,然后在该处理程序中重新构建表单。

代码语言:javascript
复制
'#type' => 'submit',
'#ajax' => [
  'callback' => '::ajax_function',
  'wrapper' => 'my-button-wrapper',
],
'#submit' => ['::ajaxButtonSubmit'],

然后:

代码语言:javascript
复制
public function ajaxButtonSubmit(array &$form, FormStateInterface $form_state) {
  $form_state->setRebuild(TRUE);
}

这样做,就不会调用默认的提交处理程序,而是调用ajax提交处理程序,从而确保重新构建表单,而不是重新加载表单。

票数 4
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/284593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档