Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drupal 7 触发元素始终显示第一个按钮_Drupal 7_Drupal Modules_Drupal Fapi_Drupal Forms - Fatal编程技术网

Drupal 7 触发元素始终显示第一个按钮

Drupal 7 触发元素始终显示第一个按钮,drupal-7,drupal-modules,drupal-fapi,drupal-forms,Drupal 7,Drupal Modules,Drupal Fapi,Drupal Forms,我有一个表格,有很多部分。每个部分都有一个“#states”属性,该属性根据上一步中选择的内容显示或隐藏。每个部分中都有一个按钮,用于添加或删除字段。单击其中一个按钮可通过AJAX调用函数。此函数使用$form_state['triggering_element']['#name']查找单击了哪个按钮,从而将字段添加到适当的部分。问题是,无论哪个部分可见,触发元素似乎总是第一部分中的按钮。我不想把所有的代码都放在这里,因为它很长。以下是两个按钮的外观以及单击按钮调用的函数和最终回调: $form

我有一个表格,有很多部分。每个部分都有一个“#states”属性,该属性根据上一步中选择的内容显示或隐藏。每个部分中都有一个按钮,用于添加或删除字段。单击其中一个按钮可通过AJAX调用函数。此函数使用$form_state['triggering_element']['#name']查找单击了哪个按钮,从而将字段添加到适当的部分。问题是,无论哪个部分可见,触发元素似乎总是第一部分中的按钮。我不想把所有的代码都放在这里,因为它很长。以下是两个按钮的外观以及单击按钮调用的函数和最终回调:

$form['survey']['contents']['addsurvey'] = array(
    '#type' => 'submit',
    '#default_value' => t('Add Another Survey Question'),
    '#submit' => array('touchpoints_metrics_add_one'),
    '#limit_validation_errors' => array(),
    '#name' => 'add-survey',
    '#ajax' => array(
        'callback' => 'touchpoints_metrics_callback',
        'wrapper' => 'survey-div',
    ),
);

$form['mysteryshop']['contents']['addmystery'] = array(
        '#type' => 'submit',
        '#default_value' => t('Add Another Observation'),
        '#submit' => array('touchpoints_metrics_add_one'),
        '#limit_validation_errors' => array(),
        '#name' => 'add-mystery',
        '#ajax' => array(
            'callback' => 'touchpoints_metrics_callback',
            'wrapper' => 'mysteryshop-div',
        ),
    );

function touchpoints_metrics_add_one($form, &$form_state) {
    $element = $form_state['triggering_element']['#name'];
    $tracker = '';
    if (strpos($element, 'survey')) {
        $tracker = 'num_surveys';
    } elseif (strpos($element, 'mystery')) {
        $tracker = 'num_mystery';
    } elseif (strpos($element, 'budget')) {
        $tracker = 'num_budget';
    } elseif (strpos($element, 'incdec')) {
        $tracker = 'num_incdec';
    } elseif (strpos($element, 'roi')) {
        $tracker = 'num_roi';
    } elseif (strpos($element, 'epu')) {
        $tracker = 'num_epu';
    } elseif (strpos($element, 'response')) {
        $tracker = 'num_response';
    } elseif (strpos($element, 'numcomplete')) {
        $tracker = 'num_numcomplete';
    } elseif (strpos($element, 'perccap')) {
        $tracker = 'num_perccap';
    }
    $form_state[$tracker]++;
    $form_state['rebuild'] = TRUE;
 }

function touchpoints_metrics_callback($form, &$form_state) {
    $element = $form_state['triggering_element']['#name'];
    $tracker = '';
    if (strpos($element, 'survey')) {
        $tracker = 'survey';
    } elseif (strpos($element, 'mystery')) {
        $tracker = 'mysteryshop';
    } elseif (strpos($element, 'budget')) {
        $tracker = 'budget';
    } elseif (strpos($element, 'incdec')) {
        $tracker = 'incdec';
    } elseif (strpos($element, 'roi')) {
        $tracker = 'roi';
    } elseif (strpos($element, 'epu')) {
        $tracker = 'epu';
    } elseif (strpos($element, 'response')) {
        $tracker = 'response';
    } elseif (strpos($element, 'numcomplete')) {
        $tracker = 'numcomplete';
    } elseif (strpos($element, 'perccap')) {
        $tracker = 'perccap';
    }
    return $form[$tracker]['contents'];

}