array( "callback" => "my_callback", "wr-6ren">
gpt4 book ai didi

jquery - AJAX 表单验证并提交

转载 作者:行者123 更新时间:2023-12-03 22:06:16 25 4
gpt4 key购买 nike

我在 Drupal 7 中创建了一个表单并想要使用 AJAX。我将其添加到提交按钮数组中:

"#ajax" => array(
"callback" => "my_callback",
"wrapper" => "details-container",
"effect" => "fade"
)

这有效,但整个验证功能被忽略。如何在调用 my_callback() 之前验证表单?如何在 AJAX 表单上显示状态或错误消息?

最佳答案

这个问题和答案帮助我找到了正确的解决方案,但它并不完全清楚。让我们做到这一点。

需要非常注意的事情:

  1. 验证错误消息将放置在 #ajax['wrapper'] 指定的内容内
  2. 密切关注Drupal Forms API documentation of the ajax wrapper的位置表示“具有此 ID 的整个元素都会被替换,而不仅仅是元素的内容。”
  3. 由于该元素已被替换,因此您最好重新提供它。 就是 Marius Ilie 的答案有效的原因 - 不是因为数组和 #markup,而是因为他包含了带有包装器 ID 集的 div。

以下是根据 Marius 在上面的评论中添加的内容对我有用的代码:

function dr_search_test_form($form, &$fstate) {
$form["wrapper"] = array("#markup" => "<div id='test-ajax'></div>");

$form["name"] = array(
"#type" => "textfield",
"#required" => true,
"#title" => "Name"
);

$form["submit"] = array(
"#type" => "submit",
"#value" => t("Send"),
"#ajax" => array(
"callback" => "dr_search_test_form_callback",
"wrapper" => "test-ajax",
"effect" => "fade",
),
);
return $form;
}

function dr_search_test_form_callback($form, &$fstate) {
return "<div id='test-ajax'>Wrapper Div</div>";
}

function dr_search_test_form_validate($form, &$fstate) {
form_set_error("name", "Some error to display.");
}

关于jquery - AJAX 表单验证并提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7903073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com