我想在Drupal7中创建一个只有一个字段的简单表单。当点击提交按钮时,我需要使用字段值调用ajax函数并在页面上更新DIV而不重新加载。
我不熟悉Drupal表单API,我尝试从表单api文档中实现这些示例,但我总是遇到这样的错误:
Notice: Undefined index: #title_display form_pre_render_conditional_form_element() függvényben (/var/www/nmtest/includes/form.inc 2986 sor).
Notice: Undefined index: #value theme_textarea() függvényben /var/www/nmtest/includes/form.inc 3727 sor).
我可以通过创建自定义页面并使用原生PHP来实现,但这不是一种“优雅”的方式。
我想要类似于此处的类似内容,但没有形式定价,页面重新加载等等:Create a VERY simple form in Drupal
我只想要一个调用ajax函数的按钮。我是使用表单API执行此操作还是仅使用普通的原生PHP和jQuery?
编辑:看起来我甚至不需要真正的ajax调用,因为我只需要更改IMG标记的SRC。
这是我在原生PHP中所做的。我想在这个低谷形成api:
<script>
function getstar() {
starpoints = jQuery('#starpoints').val();
rand = Math.floor(Math.random() * 9999) + 1;
src = "test.php?star=" + starpoints + '&rand=' + rand;
jQuery('#starimg').attr("src",src);
return false;
}
</script>
<form>
<input type="text" name="starpoints" id="starpoints" />
<input type="submit" onclick="return getstar();" />
</form>
<img src="/test.php?star=5" id="starimg" />
编辑:好的,我设法使用Drupal API渲染表单。现在唯一的事情是我想通过我的模块插入IMG的占位符,但我不知道该怎么做。表单呈现得很好,但我想在它之后添加一个HTML块。目前我是通过javascript实现的:
jQuery(document).ready(function() {
jQuery('<div><br /><img id="starimg" src="" /></div>').insertAfter('#drawstar-form');
});
我应该抓住什么钩子来在表单后呈现这个HTML块?我尝试了 drupal_get_form ,但返回了一个数组,我无法附加HTML块。
答案 0 :(得分:1)
Form API提供了执行此操作所需的一切,而无需编写任何一行JavaScript代码。请参阅http://drupal.org/node/752056和http://api.drupal.org/api/examples/ajax_example!ajax_example.module/function/ajax_example_simplest/7以及。