AJAX jQuery click приводит к тому, что событие функции запускается дважды - PullRequest
1 голос
/ 09 апреля 2010

У меня есть модуль чата AJAX в Drupal, и я пытаюсь вставить теги BBCode tex в поле отправки, когда пользователь нажимает Insert Tex. Мне удалось заставить следующий код работать в первый раз, но потом, когда я нажимаю Insert Tex, он вставляет теги tex три раза.

$('#edit-chatroom-message-entry-submit').click(function (e) {
  e.preventDefault();
  e.stopPropagation();
  if ($('#edit-chatroom-message-entry-box').val()){
    Drupal.chatroom.postMessage($('#edit-chatroom-message-entry-box').val());
    $('#edit-chatroom-message-entry-box').val('').focus();
  }
});

$('#edit-chatroom-tex-submit').click(function (e) {
  e.preventDefault();
  e.stopPropagation();
  $('#edit-chatroom-message-entry-box').val($('#edit-chatroom-message-entry-box').val() + '[tex][/tex]');
});

Буду признателен, если будет предложено сделать код работающим должным образом.

Ответы [ 2 ]

1 голос
/ 09 апреля 2010

Если я правильно понимаю ваш код, вам нужно это:

var chatbox = $('#edit-chatroom-message-entry-box');
var value = chatbox.val();

if (value.indexOf('[tex][/tex]') == -1) {
    chatbox.val(value + '[tex][/tex]');
}
0 голосов
/ 10 апреля 2010

Установка позиции каретки в 0 в jquery устранила проблему: каретка (0);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...