以Drupal 7格式停止Ajax事件

时间:2015-04-01 14:42:56

标签: ajax javascript-events drupal-7

我遇到了Drupal 7问题及其内置的ajax框架。 我的字段在用户填写时逐步注册,并在提交表单时进行最终检查(此时没有js)。除了我的提交按钮之外,我正在为每个字段使用#ajax回调:

$form['myfield'] = array(
        '#type' => 'textfield',
        '#default_value' => 'test',
        '#title' => 'test',
        '#ajax' => array(
            'callback' => '_form_submit_callback',
            'wrapper' => 'name-error-icon-container',
            'method' => 'html',
            'effect' => 'none',
            'progress' => array(
                'message' => NULL,
            ),
        )
);

//EDIT: My callback as asked

function _form_submit_callback($form, &$form_state)
{

    form_state_values_clean($form_state); //Remove unuseful values from $form_state['values']    
    $hash = $form_state['values']['hash'];
    $currData = db_select('my_custom_table', 'rms')
        ->condition('hash', $hash)
        ->forUpdate(true)
        ->fields('rms')
        ->execute()
        ->fetchAssoc();
    if (is_array($currData)) {
        if ($currData != $form_state['values']) {
            $form_state['values']['updated_at'] = time();

            $num_updated = db_update('my_custom_table')
                ->fields($form_state['values'])
                ->condition('hash', $hash)
                ->execute();
            }
        }
    } else {
        $form_state['values']['inserted_at'] = $form_state['values']['updated_at'] = time();
        db_insert('my_custom_table')
            ->fields($form_state['values'])
            ->execute();
    }
}

这使我可以知道用户在哪里以及哪个字段已经完成。

在最后一个领域之前,一切都很顺利。用户输入字段并更改值。该字段仅在用户离开时使用ajax查询进行更新。

因此,每次用户离开某个字段时,都会调用_form_submit_callback函数并更新我的内容。

当用户点击提交表单按钮时出现问题。发送两个更新查询,一个带有ajax,离开字段,另一个带有表单提交功能。

当我点击提交按钮时,如何防止Drupal发送ajax查询?有没有办法删除每一个电话或只是禁用ajax到处?我检查了模糊,改变,聚焦事件,但没有任何工作,似乎Drupal正在使用自己的事件。我在浏览器中看到一个名为Drupal.ajax的js对象,也许我可以用它做点什么?

我现在已经有几天了。我很累:f如果你有任何想法?谢谢!

0 个答案:

没有答案