【问题标题】:AJAX jQuery click results in function event being fired twiceAJAX jQuery 点击导致函数事件被触发两次
【发布时间】:2010-04-09 03:07:24
【问题描述】:

我在 Drupal 中有一个 AJAX 聊天室模块,我试图在用户单击 Insert Tex 时将 BBCode stlye 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]');
});

如果可以提出建议以使代码正常工作,我将不胜感激。

【问题讨论】:

    标签: jquery ajax drupal


    【解决方案1】:

    如果我正确理解你的代码,你需要这个:

    var chatbox = $('#edit-chatroom-message-entry-box');
    var value = chatbox.val();
    
    if (value.indexOf('[tex][/tex]') == -1) {
        chatbox.val(value + '[tex][/tex]');
    }
    

    【讨论】:

    • 感谢 Ivo 的回复,但我无法让您的代码正常工作。我删除了第二个函数的最后一行并添加了您的代码,但我仍然看到双标签。如果我再次点击,我会看到三个标签......等等。你能建议点别的吗?谢谢。
    • 当然,url是http://sharpermath.com/drupal/node/24我相信你可以使用firebug来测试它
    【解决方案2】:

    在 jquery 中将插入符号位置设置为 0 解决了问题:caret(0);

    【讨论】:

    • 添加绘图画布我在不同的设置中再次遇到了同样的问题。在 jquery 中将插入符号位置设置为 0 解决了问题: caret(0);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多