【问题标题】:How do I add an onchange handler to a dropdown list in Drupal?如何将 onchange 处理程序添加到 Drupal 的下拉列表中?
【发布时间】:2011-11-12 11:43:14
【问题描述】:

如何在 Drupal 的下拉列表中添加 onchange 处理程序?下拉列表是使用 hook_form() 添加的。我必须根据 onchange 函数执行一个函数。 有没有办法做到这一点?

【问题讨论】:

    标签: drupal drupal-6 drupal-modules


    【解决方案1】:

    你可以像这样添加一个表单:

     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() 添加提交功能。

    【讨论】:

    • 我正在使用 D7 并将 dropdown 周围的单引号编码为 ' 我想是 check_plain。我该如何避免呢?
    • 这在 D7 中可行吗??
    【解决方案2】:

    这是使用'#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'
      ),
    );
    

    【讨论】:

      【解决方案3】:

      如果您使用此下拉菜单生成另一个表单域。

      然后使用 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...')
        )      
      ),
      

      【讨论】:

        【解决方案4】:

        虽然我确信 Nicholas 现在已经解决了这个问题,但这可能会帮助一些正在寻找解决方案的人。

        我正在使用 D7 并将下拉列表周围的单引号编码为 ' 我想是由 >check_plain. > 如何避免这种情况? – Nicholas Tolley Cottrell 6 月 2 日 16:03

        我刚刚找到了执行此操作的“Drupal”方式。

        第 1 步,使用 drupal_add_js 设置一个包含下拉列表的变量:

        drupal_add_js(array('mymodule' => array('varname' => 'dropdown')), 'setting');
        

        第二步,将属性行添加为

        '#attributes' => array('onchange' => "form.submit(Drupal.settings.mymodule.varname)"),
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-09-28
          • 1970-01-01
          • 1970-01-01
          • 2016-08-05
          • 1970-01-01
          • 2012-05-14
          • 2012-06-22
          • 1970-01-01
          相关资源
          最近更新 更多