Скрипт не срабатывает или срабатывает несколько раз

Рейтинг: 0Ответов: 1Опубликовано: 19.03.2015

Есть некий

<div id="tovar"></div>
куда вставляются даныые:

echo "<div id='item_".$my_id."'>
<table class='table_1' width='100%'>
<td width='8%;'><center><input class='del_button2' type='text' style='width:25px' id='del2-".$my_id."' value='1'/></center></td>
</table></div>";

который рисует таблицу с полем ввода, который нужно изменять. POST запросом отправляется id строки и нужное значение.

$(function(){
    $(".del_button2").keydown(function(event) {
    var clickedID = this.id.split("-"); //Разбиваем строку (Split работает аналогично PHP explode)
    var DbNumberID = clickedID[1]; //и получаем номер из массива
    var log = $("#del2-"+DbNumberID).val();
      if (event.keyCode == '13') {
            $.ajax({
            type: "POST",
            url: "ser/kvit2.php",
            data: "action=adduser&log="+log+"&stroka="+DbNumberID,
            success: function(html){
                $("#logff").html(html);            
            }
            });
       }
    });
});

Так вот, если сначала вызвать javascript код, а потом форму с таблицей (с помощью добавления данных без перезагрузки страницы), то сприпт вообще не понимает, что на странице появилась новая таблица.

А если таблицу с данными выводить вместе с подгрузкой яваскрипта, то при добавлении нескольких таблиц также несколько раз подгружается javascript, и на первых таблицах скрипт начинает выполнять столько POST запросов, сколько таблиц и было добавлено. Как от этого избавиться?

Ответы

▲ 1

Мне трудно понять, что именно скрипт делает и что именно Вы хотите.

  1. JS прослушивает все элементы с классом del_button2 на событие keydown.
  2. При event.keyCode == '13' выполняется Post запрос.

Можно к input добавить onsubmit.

<input class='del_button2' id='del2-".$my_id."'/>

В js прописать функцию, которая будет работать с определённым полем, а не со всеми сразу.

function ajaxPost(delButton){  
// Эта функция будет вызвана при нажатии Enter внутри текстового поля  
}