Rafał
G.
Programista
aplikacji
internetowych
Temat: Ajax.InPlaceEditor - problem z inicjalizacja
Powiedzmy, że mam taki HTML:
<div id="refresh">
<div id="product_2_qty" class="editor_tr">5</div>
<div id="product_3_qty" class="editor_tr">6</div>
</dvi>
Chciałbym użyć na tych dwóch divach InPlaceEditor, więc napisałem taką funkcję:
function initEditors()
{
var tds = $$('div.editor_tr');
var tdsLenght = tds.length;
var tempArr = null;
for (i=0; i<tdsLenght; i++)
{
tempArr = tds[i].id.split('_');
new Ajax.InPlaceEditor('product_'+tempArr[1]+'_qty', 'skrypt.php', {
okControl: 'button',
cancelControl: 'button',
okText: '',
cancelText: '',
size: 14,
callback: function(form, value)
{
return 'product_id='+tempArr[1]+'&qty='+encodeURIComponent(value);
}
});
}
}
Funkcję tą wywołuję gdzieś poniżej tych divów (przy załadowaniu strony). Problem plega na tym, że nawet jeśli wywołam edytorek na pierwszym divie, na którym zmienna produkt_id powinna przyjąć wartość "2", to i tak przyjmuje wartość "3", czyli tego drugiego diva, tak jakby została użyta instancja edytora z ostatniej iteracji tej pętli.
Id w skrypcie pobierają się prawidłowo (wyświetliłem za pomocą alert()).
Uprzedzę też pytanie - robię to w ten sposób, bo div "refresh" jest odświeżany za pomocą Ajax i po odświeżaniu InPlaceEditor w ogóle nie działa, jeśli go ponownie nie zainicjuję (mogą to zrobić za pomocą callbacka Ajax wywołując w/w funkcję).
Co może powodem mojego problemu? Może ewentualnie znacie inny sposób zainicjowania edytora np. wywołanie jakiejś funkcji przy pomocy onClick każdego z tych divów?