以Drupal7形式停止Ajax事件
我面临一个Drupal7问题及其内置的ajax框架。 我的字段在用户填写时一步一步地注册,在提交表单时进行最终检查(这次没有js)。除了我的提交按钮外,我对每个字段都使用了这个#ajax回调:以Drupal7形式停止Ajax事件,ajax,javascript-events,drupal-7,Ajax,Javascript Events,Drupal 7,我面临一个Drupal7问题及其内置的ajax框架。 我的字段在用户填写时一步一步地注册,在提交表单时进行最终检查(这次没有js)。除了我的提交按钮外,我对每个字段都使用了这个#ajax回调: $form['myfield'] = array( '#type' => 'textfield', '#default_value' => 'test', '#title' => 'test', '#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_回调函数并更新我的内容
当用户单击SubmitForm按钮时会出现问题。发送两个更新查询,一个是通过离开字段使用ajax,另一个是通过表单提交功能
当我单击提交按钮时,如何防止Drupal发送ajax查询?有没有一种方法可以删除每一个调用,或者只是在任何地方禁用ajax?我检查了模糊、更改、聚焦事件,但没有任何效果,看起来Drupal正在使用自己的事件。我在浏览器中看到一个名为Drupal.ajax的js对象,也许我可以用它做点什么
我这几天都在忙这个。我累坏了:f,你知道吗?谢谢大家! 你能发布你的ajax和提交回调吗?我发布了我的表单提交回调,但我不知道它有什么用处。我没有ajax回调。Drupal独自完成工作。