使用Drupal 7 Form API更新表单的选择选项

时间:2012-03-12 17:58:34

标签: php drupal drupal-7 drupal-modules drupal-views

表单下方列出的每个制造商徽标都应(单击时)将选项值更改为用户单击的任何值。例如:如果用户单击vulcan图像,则需要在表单提交之前使用VULCAN select选项更新表单。表单选项正在填充我在代码中列出的数据库查询。这很好,所以没有问题。

制造商图像由Views模块填充。为了清晰起见,我已经包含了这些设置的图片。

所以我的问题是:为这些制造商的图像提供更改所选选项的功能有什么好方法?我的php非常棒,但我猜它与使用Form API更改#default_value有关?

任何帮助都将不胜感激!!

View settings for Manufacturer Logos

This is a preview of the block I am working with.

function part_finder_form($form, &$form_state) {
  $options = part_finder_form_get_manufacturer_list();
  $form['manufacturer'] = array(
   '#prefix' => '<span class="right_arrow"></span>',
   '#type' => 'select',
   '#required' => TRUE,
   '#empty_option' => t('Start by selecting a manufacturer...'),
   '#options' => $options,

);
$form['submit'] = array(
   '#type' => 'submit',
   '#value' => 'Go',
);
return $form;
}

function part_finder_form_get_manufacturer_list() {
  $options = array();
  $results = db_query("SELECT nid, title FROM {node} WHERE type = :type", array(':type' => 'rep_manufacturers'));
  foreach ($results as $option) {
  $options[$option->nid] = $option->title;
}

return $options;
}

1 个答案:

答案 0 :(得分:1)

你可以使用jQuery做到这一点。

以下是示例代码。 (在此代码中,我假设图像标题存储了您需要传递给选择的值)

var images = jQuery('#image_wrapper img');
var select = jQuery('#manufacturer');
images.click(function()
{
select.val(jQuery(this).attr('title'));
});

您可以将此代码添加到单独的javascript文件中,然后使用$ form ['#adored']

将其添加到表单中
$form['#attached']['js'] = array('PATH_TO_JS_FILE');

希望这适合你

穆罕默德。