Синхронная запись в текстовое поле на jQuery

Синхронная запись в текстовое поле на jQuery

Нередки ситуации, когда необходимо, например, продублировать запись, вводимую пользователем в соседнее текстовое поле или в скрытое. Для этого необходимо повесить два события на текстовое поле:

  • keyup - сработает если пользователь выберет ранее введенное значение из подсказки браузера;
  • change - при непосредственном изменении текстового поля.

MYMODULE.js будет содержать следующий код.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
 * Синхронная запись в текстовое поле на странице.
 */
(function($) {
  Drupal.behaviors.MyModuleName = {
    attach: function (context, settings) {
      // Вешаем на поле два события - change и keyup.
      $('input.MY-CSS-SELECTOR-FIELD-1', context).bind('keyup change', function(){
        var text_value = $(this).val();
        // Предполагаем, что эти два поля находятся в одном родительском элементе.
        var wrapper = $(this).parent();
        // Поле, в которое будет синхронно вставлять текст из первого поля.
        $('input.MY-CSS-SELECTOR-FIELD-2', wrapper).val(text_value);
      });
    },
  };
})(jQuery);