2013-07-19 3 views
-2

Привет, ребята, у меня проблема на Javascript. Это код,Javascript duplicate id

function reply_click(clicked_id) { 
    var la = <? php echo json_encode($logOptions_id); ?> ; 
    var mood = clicked_id; 
    $.post('msg.php', { 
     myne: la, 
     mood: mood 
    }, function (data) { 
     $('#nov').html(data); 
    }); 
    $('#postDiv').on('keydown', '#textarea', function (e) { 
     if ((e.which == 13) && !event.shiftKey) { 
      var textarea = $("#textarea").val(); 
      $.post('pst.php', { 
       mibe: la, 
       voot: mood, 
       pst: textarea 
      }, function (data) { 
       var textarea = $("#textarea").val(''); 
      }); 
     } 
    }); 
} 

Проблема заключается в том, когда я нажал на пункт я получаю clicked_id, после отправки сообщений, его хорошо, но потом еще раз нажав на пункт, я получаю второй идентификатор, и после того, как пост кнопку ввода он отправляет в базу данных разность идентификаторов от первого и второго элементов, кажется дублирующими значениями, сколько раз я нажимаю на разные элементы, получая разные идентификаторы, и эта проблема является спамом моей БД.

ответ

3

Каждый раз, когда вы нажимаете кнопку, вы добавляете еще одну ссылку: keydown, привязывающую к #textarea. Поэтому, если вы нажмете кнопку 5 раз, то, когда вы нажмете Enter, привязка keydown будет выполняться 5 раз.

Вы должны переместить $('#postDiv').on('keydown', '#textarea', ...) вне функции и просто сделать это один раз в документе, готовом обработчике.