Добрый день, Уважаемые гуру!
Подскажите решение, я организовал вывод данных из Mysql в html таблицу с помощью ajax запросов.
А благодаря jQuery выполняются различные функции, которые работают и одна из них - это фильтрация значений из колонок средствами ajax.
Javascript |
1
2
3
4
5
6
7
8
9
10
11
| // функция поиска
$("input#searc").keyup(function(){
input=$(this).val();
if(input.length>2){
sorting = 'sort_like_'+bd_name;
data_mess = error_find_bd(selection_bd(str_amount,input,sorting,bd_name,table_name),no_data);
$('tbody#top').html(data_mess);
$('#container').hide();
} }); |
|
А отфильтрованные данные уже пытаюсь редактировать с помощью функции, которая до фильтрации - работает, но после - перестает.
Javascript |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
| // скрипт редактирования
$('[contenteditable="true"]') // редактируемый элемент
.mousedown(function (e) // обрабатываем событие нажатие мышки
{ e.stopPropagation();
elementclass = $(this).attr('class');
art_id = $(this).closest('tr').find('.id_article').attr('id');
ID_ART = elementclass+'*'+art_id; // ID Элементов
contentold[ID_ART] = $(this).text(); // текст до редактирования
// запись старой реализации
if(elementclass=='coefficient' && $(this).text() != ''){
ID_PR = 'price_sale_'+art_id;
contentold[ID_PR] = $(this).closest('tr').find('.price_sale').text();
}
$(this).bind('keydown', function(e) { // обработчик нажатия Escape
if(e.keyCode==27){
e.preventDefault();
$(this).text(contentold[ID_ART]); // возвращаем текст до редактирования
}
});
})
.keyup(function ()
{
elementidsave = $(this).closest('tr').find('.id_article').attr('id'); // ID Товара
elementclass = $(this).attr('class'); // Class элемента
contentsave = $(this).text(); // Данные Элемента
if(elementclass=='coefficient' && contentsave != '' && contentsave.length<4){
price_purchase = parseInt($(this).closest('tr').find('.price_purchase').attr('id'));
price_shipping = parseInt($(this).closest('tr').find('.price_shipping').attr('id'));
contentsave = parseFloat(contentsave);
itg = Math.round((price_purchase+price_shipping)*contentsave);
$(this).closest('tr').find('.price_sale').text(numFormat(itg,'.',' ')+' руб.');
$(this).closest('tr').find('.price_sale').attr('id',itg);
}
/*switch(elementclass){
case 'name_commodity' : m = contentsave.substr(0,254); break;
case 'coefficient' : m = contentsave.substr(0,4); if(m.match(/[.]/g).length == 1) { $(this).text(m);} break;
case 'amount' : m = contentsave.substr(0,4); if(m.match(/[.]/g).length == 1) {$(this).text(m);} break;
}*/
//alert('asd'+elementidsave);
})
.keypress(function(e)
{
elementidsave = $(this).closest('tr').find('.id_article').attr('id'); // ID Товара
elementclass = $(this).attr('class'); // Class элемента
contentsave = $(this).text(); // Данные Элемента
if(elementclass == 'coefficient' || elementclass == 'amount'){
e = e || event;
if (e.ctrlKey || e.altKey || e.metaKey) return;
var chr = getChar(e);
// с null надо осторожно в неравенствах,
// т.к. например null >= '0' => true
// на всякий случай лучше вынести проверку chr == null отдельно
if (chr == null) return;
if (chr < '0' || chr > '9' || chr == '.') {
return false;
}
}
})
.blur(function (event) // обрабатываем событие потери фокуса
{
elementidsave = $(this).closest('tr').find('.id_article').attr('id'); // ID Товара
elementclass = $(this).attr('class'); // Class элемента
contentsave = $(this).text(); // Данные Элемента
ID_ART = elementclass+'*'+elementidsave; // ID Элементов
var ltr=$(this);
event.stopImmediatePropagation();
// if (elementid===elementidsave) // если id не совпадает с id элемента, потерявшего фокус,
if(contentsave == ''){ $(this).text(contentold[ID_ART]); } // проверка если пустое значение
if (contentsave!=contentold[ID_ART] && contentsave != '' && contentold[ID_ART] != undefined ) // если текст изменился
{
alert_show();
jQuery.alerts.okButton = ' Да ';
jQuery.alerts.cancelButton = ' Нет ';
jConfirm("<h2 style='font-size:18px;color:red;'>Внести изменения?</h2>",' ',function(r){
if(r == true){
savedata(ID_ART,contentsave); // отправляем на сервер
}else{
ltr.text(contentold[ID_ART]);
if(elementclass == 'coefficient'){
ID_PR = 'price_sale_'+elementidsave; // ID Элементов
ltr.closest('tr').find('.price_sale').text(contentold[ID_PR]);
}
}
jQuery('body').css("overflow","visible"); jQuery('.fon_alert').remove();
});
}
}); |
|
Моих знаний работы JS не хватает чтоб понять причины.
Тем самым я думаю можно решить этот вопрос, занести все данные из БД в массив и после чего фильтровать, а редактированные данные записывать в БД и возможно редактирования от фильтрованных данных будет работать.
Возможно ли решить данную проблему не записывая данные в массив или это единственно верное решение!?