Доброго времени суток! Есть таких два скрипта [js] window.addEvent('domready', function() { var url = 'index.php?option=com_chronoforms&chronoform=form_act_oglyadu_tech&event=ajaxEvent1&format=raw'; var article = $('article'); article.addEvent('blur', function() { var value = article.value.trim(); var jSonRequest = new Request.JSON({ url : url, method : 'get', data : {article : article.value}, onComplete : function(r) { $('descdefect').innerHTML += r.defect_ok; } }).send(); }); });[/js] PHP: <?php // clean up the JSON message $defect = trim($_GET['article']); // check that the article field isn't empty //$response = false; if ( $defect ) { // Check the database $db =& JFactory::getDBO(); $query = "SELECT `defect` FROM `#__models`,`#__defect` WHERE `dSerialItem`= `mSerialItem` and LOWER(`article`) = ".$db->quote($defect).";"; $db->setQuery($query); $list = $db->loadObjectList(); foreach($list as $pdefect) { $ldefect = $ldefect. '<option value="'. $pdefect->defect. '">'. $pdefect->defect. '</option>';} } $respdef = array('defect_ok' => $ldefect); //send the reply echo json_encode($respdef); // stop the from running $MyForm->stopRunning = true; die; ?> Так вот в FF работает без проблем, а в IE выдает пустой селект, проковырял пол инете, нашел что вроде бага, а как лечить не могу понять, может кто подскажет?
@sapun видимо вам нужно вместо Код (Text): $('descdefect').innerHTML += r.defect_ok; написать Код (Text): $('descdefect').inject( r.defect_ok ); http://mootools.net/docs/core/Element/E ... ent:inject нет не так. и при чём тут jQuery если это mootools?
Пишет, что проблема как раз с этой строкой - [js]$('descdefect').inject( r.defect_ok ); [/js] Может ли быть из за того, что я использую PHP: $ldefect = $ldefect. '<option value="'. $pdefect->defect. '">'. $pdefect->defect. '</option>';} Для формирования r.defect_ok через JSON?
HTML: <select id="descdefect" name="descdefect"><option value="0">Не вибрано</option> </select> Если я правильно Вас понял
А у вас может пхп код не валидный? $ldefect нигде выше не определена. хотя если в фф работает. Я предлагаю тогда: заменить эту строчку: Код (Text): foreach($list as $pdefect) { $ldefect = $ldefect. '<option value="'. $pdefect->defect. '">'. $pdefect->defect. '</option>';} на Код (Text): $ldefect = array(); foreach($list as $pdefect) { $ldefect[] = $pdefect->defect; } и соответсвующий код mootools [js] onComplete : function(r) { r.defect_ok.each(function(i){ var opt = new Element('option').set('value',i); opt.set('text',i); $('descdefect').grab(opt); }); } [/js]
Михаил, подскажите, а как предварительно очищать список перед загрузкой данных из БД, чтоб при новом значении не дописывать данные в селект?
удлалить все элементы списка: Код (Text): $('descdefect').getChildren().invoke('dispose'); все кроме первого: Код (Text): $('descdefect').getChildren().filter(function(i){return parseInt(i.get('value'))>0;}).invoke('dispose');