it-swarm-es.com

Cómo agregar algunas funciones de JavaScript antes de que comience Ajax

¿Cómo agrego algunas funciones de JavaScript antes de que comience Ajax, con FAPI?

$form['submit'] = array(    
  '#type' => 'submit',
  '#value' => 'Upload',
  '#ajax' => array(
    'callback' => 'ajax_submit_key_dump'
  ),
);
3
user871

Puede agregar un archivo javascript a un formulario usando #after_build propiedad:

$form['#after_build'] = array('my_js_add_function');

....

function my_js_add_function($form, &$form_state) {
  drupal_add_js(...);
  return $form;
}

Utilizando #after_build en lugar de agregar el js en la definición del formulario, se asegura de que el JS se agregue incluso si el formulario se obtiene de la memoria caché.

En el archivo JavaScript puede agregar cualquier jQuery que desee, un controlador de clic en el botón de envío debe hacer lo que desee.

0
googletorp

El controlador "beforeSubmit" adjunto de esa manera se ejecutará justo antes de la solicitud de Ajax:

(function ($) {
  Drupal.behaviors.ReplaceWithAnyTextYouWant = {
    attach: function (context, settings) {
      // 'edit-submit' is the element ID where you execute the #ajax.
      Drupal.ajax['edit-submit'].options.beforeSubmit = function(form_values, element_settings, options) {
      // If cancel is clicked, do not continue submitting.
      if (!confirm('Are you sure you want to continue?')) {
          return false;
      }
    }
  };
})(jQuery);

Puede realizar una validación previa al envío de la entrada del usuario e incluso cancelar el envío del formulario devolviendo falso

Aquí hay un buen ejemplo

'edit-submit' - es el elemento html ID del botón de enviar con la configuración '#ajax'. El prefijo 'edit-' se adjunta a la clave de su elemento de matriz de formulario que contiene el elemento desencadenante (botón de envío en su caso). Para $ form ['my-submit'] = array (...), la identificación html del botón resultante será: "edit-my-submit".

El archivo JS con el código que se muestra arriba, se puede adjuntar a su formulario en el constructor de formularios:

$form['#attached']['js'][] = drupal_get_path('module', 'your_module') . '/js/file.js';
6
Dmitriy Akinshin

He creado un módulo personalizado; utilizando hook_form_alter () He agregado un archivo JavaScript a uno de mis formularios de tipo de contenido. Si necesita más detalles, dígalo.

0
user709