$.ajax вытащи из keyup. Так примерно:
$(document).ready(function(){ var data = null; var flag = false; $.ajax({ type: "GET", url: "011pags.xml", dataType: "xml", success: function(xml) { flag = false; // формируем data flag = true; } ); $('#kod_tovar1').keyup(function(){ if (data && flag) { // проверка текущего значения с теми, что в data } }); }); |
непойму почему alert на выходе дает [object Object] в 26 строчке
$(document).ready(function(){ var data = null; var flag = false; $.ajax({ type: "GET", url: "011pags.xml", dataType: "xml", success: function(xml) { flag = false; $(xml).find('[price]').each(function() { var id = $(this).attr('id') data = {}; data[id] = $(this).attr('id'); data[id].name = $(this).attr('name'); data[id].price = $(this).attr('price'); flag = true; }); } }); $('#kod_tovar1').keyup(function(){ if (data && flag) { id = $(this).val(); alert (data); if (id in data) { $('#kod_tovar1').val(data[id]); $('#nazvanie1').val(data[id].name); $('#cena1').val(data[id].price); } } }); }); |
А что должно давать?
var x = {} alert(x) |
Не пойму как правильно свойства задать здесь:
data[id] = {}; |
А это так и должно быть:
alert (data[id]); == > undefined |
data = {} data[1] = {} data[1].name = 'aaa'; data[1].price = '1000'; |
Толи я тупой толи ....
Совсем запутался, пните куда рыть $(xml).find('[price]').each(function() { var id = $(this).attr('id'); //var name = $(this).attr('name'); //var price = $(this).attr('price'); //for(var id in data) { data = {}; for(var id in data) { data[id] = {}; //for(var id in data) { data[id].name = $(this).attr('name'); data[id].price = $(this).attr('price'); } console.log(data[id]); }); |
ты data в цикле постоянно обнуляешь(data = {};).
Я выше показывал где объявлять, там где писал: var data = null; пиши data = {}; |
Спасибо.
В осле не работает, почемуто |
Все работает.
Огромное спасибо micscr за помощь. вот рабочий код: $(document).ready(function(){ var data = null; data = {}; var id = null; data[id] = {}; var flag = false; $.ajax({ type: "GET", url: "011pags.xml", dataType: "xml", error: function(XMLHttpRequest, textStatus, errorThrown) { alert("Error AJAX: " + textStatus + ", " + errorThrown); }, success: function (xml) { flag = false; $(xml).find('[price]').each(function() { var id = $(this).attr('id'); data[id] = {}; data[id].id = $(this).attr('id'); data[id].name = $(this).attr('name'); data[id].price = $(this).attr('price'); }); flag = true; } }); $('#vvod_kod').keyup(function(){ if (data && flag) { id = $(this).val(); if (id in data) { var ids = 0; //$('.quantity').css('background': '#f4fff5', 'padding-left': '3px', 'height': '15px', 'border': '1px'); $('#add_tb').append('<tr id="tr-' + ids + '"><td class="quantity"><img src="images/del.jpg" width="15" height="15" onclick="removeInput(\'' + ids + '\')" /></a><input size="10" type="text" name="kodtovar_' + ids + '" id="kodtovar_' + ids + '" value="'+ data[id].id +'"></td><td class="quantity"><input size="72" type="text" name="nazvanie_' + ids + '" id="nazvanie_' + ids + '" value="'+ data[id].name +'"></td><td class="quantity"><input size="9" type="text" name="stranica_' + ids + '" id="stranica_' + ids + '" value=""></td><td class="quantity"><input size="11" type="text" name="cena_' + ids + '" id="cena_' + ids + '" value="'+ data[id].price +'"></td><td class="quantity"><input size="11" type="text" name="kolihectvo_' + ids + '" id="kolihectvo_' + ids + '" value="1"></td><td class="quantity"><input size="5" type="text" name="summa_' + ids + '" id="summa_' + ids + '" value="'+ data[id].price +'"></td></tr>'); ids++; } } }); }); function removeInput(id) { $("#tr-"+id).remove(); } Осталась одно еще проблемка <page addtobag="1" category="12" id="4"> <product height="450" id="44241" name="Надфель" price="$0" width="450" x="429" y="0"/> </page> <page addtobag="1" category="13" id="5"> <product height="450" id="99326" name="Ручка" price="$0" width="450" x="0" y="0"> <subproduct id="22098" name="Пенал" price="$0"/> </product> </page> Например вводим 22098 получаем id=5 page и умножаем на 2 вводим 44241 получаем id=4 page и умножаем на 2 вводим 99326 получаем id=5 page и умножаем на 2 Пока даже мыслей нет как можно раализовать данную штуку Пожалуйста набросайте план реализации |
Часовой пояс GMT +3, время: 02:08. |