如何在Drupal的下拉列表中添加onchange处理程序?使用hook_form()添加下拉列表。我必须根据onchange功能执行一个功能。 有没有办法做到这一点?
答案 0 :(得分:7)
您可以添加如下表单:
hook_form()
{
$form1["dropdown"] = array(
'#type' => 'select',
'#title' => t('Preview the page with themes available'),
'#options' => $ptions,
'#default_value' => 'defalut_value',
'#attributes' => array('onchange' => "form.submit('dropdown')"),
);
//Submit button:
$form1['submit'] = array(
'#type' => 'submit',
'#value' => t('Submit '),
'#attributes' => array('style' => 'display: none;'),
);
现在您可以使用hook_submit()添加提交功能。
答案 1 :(得分:4)
以下是使用'#ajax'
属性
$form['select'] = array(
'#type' => 'select',
'#title' => 'Option #1',
'#options' => $option,
'#ajax' => array(
// Call function that rebuilt other field
'callback' => 'ajax_load_field',
'method' => 'replace',
// div to be get replace by function output
'wrapper' => 'chart',
'effect' => 'fade'
),
);
答案 2 :(得分:1)
如果使用此下拉列表生成另一个表单域。
然后使用AHAH。
$form['my_form_submit'] = array(
'#type' => 'submit',
'#value' => t('Submit'),
'#weight' => 1,
'#submit' => array('my_form_submit'),//none JS version
'#ahah' => array(
'event' => 'click',
'path' => 'mymodule/js', //Your ajax function path
'wrapper' => 'myform-wrapper',
'method' => 'replace',
'effect' => 'fade',
'progress' => array(
'type' => 'bar',
'message' => t('Loading...')
)
),
答案 3 :(得分:1)
虽然我确信尼古拉斯现在已经过了这个问题,但这可能有助于一些正在寻找解决方案的人。
我正在使用D7并将下拉列表中的单引号编码为'我想通过> check_plain。 >我该如何避免? - 尼古拉斯·托利·科特雷尔6月2日16:03
我刚刚找到了“Drupal”的方式。
步骤1,使用drupal_add_js设置变量以包含下拉列表:
drupal_add_js(array('mymodule' => array('varname' => 'dropdown')), 'setting');
步骤2,将属性行添加为
'#attributes' => array('onchange' => "form.submit(Drupal.settings.mymodule.varname)"),