如何在Drupal7中正确地将onchange属性添加到表单字段中
How do I properly add an onchange attribute to a form field in Drupal 7
在我正在编码的模块中,我有以下代码:
'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">
[...]
我需要改变什么才能让它发挥作用?
您可以尝试以下操作:
'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.....
});
我刚刚找到了"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
,因此'
或''
总是转换为'
。
相关文章:
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何向JSON数组动态添加属性
- 如何在 JavaScript 中以递增顺序在对象中添加属性
- 挖空.js - 向服务器端发送的数据添加属性
- 借助for循环和数组在对象中添加属性
- 新手查询动态添加属性
- 为什么可以'我们在函数体中为函数对象添加属性,就像在javascript中为对象文字添加属性一样
- 使用javascript为网页中的所有图像添加属性
- Javascript - 如何向对象构造函数添加属性
- 向插件添加属性(不是默认方式)
- 如何使用 Ext.js 向内存中的标记添加属性
- Gmaps4rails:如何向 json 添加属性
- 在运行时向 Javascript 对象添加属性
- 从Input Javascript在脚本中添加属性
- JQuery:如何检查复选框是否被选中并向字段添加属性
- 向构造函数或原型添加属性之间的区别
- 向对象动态添加属性
- 无法向按钮添加属性
- 定义一个函数,然后为其添加属性
- 如何通过javarscript或jquery在数组中添加属性复选框(checked=true)