在我正在编码的模块中,我有这段代码:
'SelectType' => array(
'#type' => 'select',
'#name' => 'dropdown',
'#options' => drupal_map_assoc(array(
'Keyword-classic','Keyword-Encore','Reserves: Instructor',)),
'#attributes' => array('id' => array('SelectType'),
'onchange' => "change_action('catalogsearch', this.selectedIndex)",
),
),
这会产生这样的结果:
[...]
<select id="SelectType"
onchange="change_action('catalogsearch', this.selectedIndex)"
name="dropdown" class="form-select">
[...]
我需要它来生成(在第三行输出'而不是'):
[...]
<select id="SelectType" style="float:left;"
onchange="change_action('catalogsearch', this.selectedIndex)"
name="dropdown" class="form-select">
[...]
我需要更改什么才能让它发挥作用?
答案 0 :(得分:1)
你可以试试这个:
'SelectType' => array(
'#type' => 'select',
'#name' => 'dropdown',
'#options' => drupal_map_assoc(array(
'Keyword-classic','Keyword-Encore','Reserves: Instructor',)),
'#attributes' => array('id' => array('SelectType'),
'onchange' => 'change_action(\'catalogsearch\', this.selectedIndex)',
),
),
顺便说一下,由于ID
是唯一的,并且一次只能使用一个元素,因此您应该使用'id' => 'SelectType'
代替'id' => array('SelectType')
。
修改强>
如果上述代码不起作用,那么您可以使用jQuery
,如下所示:
$("#SelectType").change(function() {
YOUR CODE.....
});
答案 1 :(得分:0)
我刚刚找到了“Drupal”的方式。
步骤1,使用drupal_add_js设置变量以包含下拉列表:
drupal_add_js(array('mymodule' => array('varname' => 'catalogsearch')), 'setting');
步骤2,将'onchange'行添加为
'onchange' => 'change_action(Drupal.settings.mymodule.varname, this.selectedIndex)'
通过这样做,传递变量而不需要'
通过主题系统。主题系统始终在属性值上调用check_plain
,因此'
或\'
始终转换为'
。