У меня есть чуток яваскрипта: Код (Text): var fArtNr = $("<input id=\"ref\" type=\"text\" name=\"ref\" size=\"6\" class=\"ui-autocomplete-input\" value=\"'.$selected.'\"/> / "); который выводит поле при действии addButton И есть аналогичный, которым бы я хотел пользоваться в php: Код (Text): $formarticle->select_article($object->art_nr,\'ref\',array(\'selectarnr_id\',\'state_id\'),6); от так же выводит инпут... как бы мне его засунуть правильно под Код (Text): var fArtNr = $(); Чёт у меня самого ничего не получается... хотя не пишите ответ, дайте ссыль куда глянуть, чтобы на будущее не задавал глупых вопросов Спасибо всем заранее
Попробовал вот так: Код (Text): var fArtNr = $("<?php $formarticle->select_article($object->art_nr,\'ref\',array(\'selectarnr_id\',\'state_id\'),6);?> / "); но не обрабатывается php... что может быть не так? на выходе выдаёт мне: Код (Text): <!--? $formarticle---> select_article($object->art_nr,'ref',array('selectarnr_id','state_id'),6); ?>; не врублюсь, почему $formarticle закрываются в коммент... объясните русским языком, что я не так делаю
А у вас вообще там PHP в принципе может отработать? Сделайте alert('<?=(2+3)?>'). Если выводится не 5 - значит, у вас просто не работает php на этой странице, скорее всего, потому что расширение файла не php
Не, с этим всё в порядке, файл .php и обрабатывает пыху отлично, вот только из под яваскрипта не хочет выдать мне его. На вопрос, почему через яваскрипт, а не напрямую: потому, что этим хочу создавать ещё одно дополнительное поле с аналогичным значением типа addField
Думаю я понял в чём проблема, я хочу php-код выполнить уже в браузере, что никогда работать не будет... кажется правильно изложил. Так вот теперь сразу возникает другой вопрос, как мне его "аккуратно" послать на сервак и "вернуть" уже готовый инпут который лежит под $formarticle->select_article?
Загнать html-код, возвращаемый $formarticle->select_article, в текстовую переменную, вывести его, дать ему id, а в javascript обратиться к этому полю через id
а можно пример как мне тогда вот это: Код (Text): <td colspan="3"><script type="text/javascript"> $(function() { $("#ref").combobox({ minLengthToAutocomplete : 2, selected : function(event,ui) { var obj = []; $.each(obj, function(key,values) { if (values.method.length) { getMethod(values); } }); } }); function getMethod(obj) { var id = $("#ref").val(); var method = obj.method; var url = obj.url; var htmlname = obj.htmlname; $.getJSON(url, { action: method, id: id, htmlname: htmlname }, function(response) { $.each(obj.params, function(key,action) { if (key.length) { var num = response.num; if (num > 0) { $("#" + key).removeAttr(action); } else { $("#" + key).attr(action, action); } } }); $("select#" + htmlname).html(response.value); }); } });</script> <select id="ref" class="flat" name="ref" style="display: none;"> <option value="-1"></option> <option value="1337">10040 - HKV 48 Vorderschirm ART_000046 10040</option> // тут ещё до хрена строчек <option value="2409">10111067 - HWZ M-NRK Qn10 30° 100l/i BR 423 ART_001118 10111067</option> </select><input class="ui-autocomplete-input ui-widget ui-widget-content ui-corner-left dolibarrcombobox" autocomplete="off"> <button type="button" tabindex="-1" title="Show All Items" class="ui-button ui-widget ui-state-default ui-button-icon-only ui-corner-right ui-button-icon" role="button" aria-disabled="false"> <span class="ui-button-icon-primary ui-icon ui-icon-triangle-1-s"></span> <span class="ui-button-text"> </span></button> <span role="status" aria-live="polite" class="ui-helper-hidden-accessible"></span> / <input type="text" id="stok" name="stok" size="10" value=""><div class="inline-block divButAction"><a class="butAction" href="/realroute_01/comm/action/fiche.php?action=add">Weterer Artikel</a></div></td> загнать под: Код (Text): var fArtNr = $(...); это?
Вообще ничего не понял. Допустим, есть код $formarticle->select_article(блаблабла), который возвращает <div id=aaa (тут дофига параметров)>(тут дофига всякого содержания)</div>. Выводим его на страницу: echo "Here will be my DIV! ".$formarticle->select_article().". My div was below"; А потом дергаете его через jQuery: var fArtNr = $('#aaa') Или через голый js: var fArtNr = document.getElementById('aaa')
Чёт ни фига не получается... может глянете ещё раз как мне подцепить див из этого куска говнокода: Код (Text): '$(document).ready(function() { $("#add").click(function() { var intId = $("#buildyourform div").length + 1; var fieldWrapper = $("<div class=\"fieldwrapper\" id=\"field" + intId + "\"/>"); var fArtNr = $("#field1"); var fAmount = $(" / <input type=\"text\" size\"10\" id=\"stock\" name=\"stock\" size=\"10\" />"); var removeButton = $("<input type=\"button\" class=\"remove\" value=\"-\" />"); removeButton.click(function() { $(this).parent().remove(); }); fieldWrapper.append(fArtNr); fieldWrapper.append(fAmount); fieldWrapper.append(removeButton); $("#buildyourform").append(fieldWrapper); }); $("#preview").click(function() { $("#yourform").remove(); var fieldSet = $("<fieldset id=\"yourform\"><legend>Your Form</legend></fieldset>"); $("#buildyourform div").each(function() { var id = "input" + $(this).attr("id").replace("field",""); var label = $("<label for=\"" + id + "\">" + $(this).find("input.fieldname").first().val() + "</label>"); var input; fieldSet.append(label); fieldSet.append(input); }); $("body").append(fieldSet); }); });
Так постил же уже выше... Код (Text): <div class="fieldwrapper" id="field1"> <script type="text/javascript"> $(function() { $("#ref").combobox({ minLengthToAutocomplete : 2, selected : function(event,ui) { var obj = []; $.each(obj, function(key,values) { if (values.method.length) { getMethod(values); } }); } }); function getMethod(obj) { var id = $("#ref").val(); var method = obj.method; var url = obj.url; var htmlname = obj.htmlname; $.getJSON(url, { action: method, id: id, htmlname: htmlname }, function(response) { $.each(obj.params, function(key,action) { if (key.length) { var num = response.num; if (num > 0) { $("#" + key).removeAttr(action); } else { $("#" + key).attr(action, action); } } }); $("select#" + htmlname).html(response.value); }); } });</script> <select id="ref" class="flat" name="ref" style="display: none;"> <option value="-1"></option> <option value="2396">9984380 - Ratgeber Praxishandbuch Wohnungseigentu ART_001105 9984380</option> .... <option value="2402">9984895 - Datenblatt Funksystem data (Heinze) ART_001111 9984895</option> </select><input class="ui-autocomplete-input ui-widget ui-widget-content ui-corner-left dolibarrcombobox" autocomplete="off"> <button type="button" tabindex="-1" title="Show All Items" class="ui-button ui-widget ui-state-default ui-button-icon-only ui-corner-right ui-button-icon" role="button" aria-disabled="false"> <span class="ui-button-icon-primary ui-icon ui-icon-triangle-1-s"></span> <span class="ui-button-text"> </span></button><span role="status" aria-live="polite" class="ui-helper-hidden-accessible"></span> / <input type="text" id="stok" name="stok" size="10" value=""></div> </div> Вот, вот это надо дублировать... Спасибо тебе огромное, за отзывчивость
Навскидку разобраться не получается. Выводите через console.log все объекты, с которыми работаете, проверяйте, что jQuery их находит.
Ребят, всем здрасти и хороших выходных. Мне они не сулят, парюсь третий день подряд и не могу сделать нужную фишку. Короче у меня есть кусок jQuery который доблирует мои инпуты: Код (Text): [/cod<script type="text/javascript"> var cnt = 2 $(document).ready(function(){ // Add new row $(\'.add\').click(function(event){ event.preventDefault(); var line = $(\'#field1\').html(); var expr = /del[0-9]+/; var newline = line.replace(expr, \'del\'+cnt); $(\'#buildyourform\').append(\'<div class="fieldwrapper" id="field\'+cnt+\'">\'+newline+\'<div>\'); cnt++; }); }); // Delete row function deleteRow(btn_id){ var del_id = btn_id.split(\'\'); $(\'#filed\'+del_id[1]).remove(); };'; </script> Вот этот код пыхи генерирует мне форму куда я вбиваю данные: Код (Text): print '<tr><td>'.$langs->trans('Article').' / '.$langs->trans("Stock").'</td><td colspan="3">'; print '<fieldset id="buildyourform">'; print '<div class="fieldwrapper" id="field1"/>'; print $formarticle->select_article($object->art_nr,'ref',array('selectarnr_id','state_id'),6); print '<input type="text" id="stok" name="stock" size="10" value="'.GETPOST('stock').'">'; print '</div />'; print '</fieldset>'; print '<input type="button" value="Add Article" class="add" id="add" /> <input type="button" value="Delete" class="del" id="del" onclick="deleteRow(this.id); return false; /">'; print '</td></tr>'; На выходе исходный код страницы выглядит вот так: Код (Text): <td colspan="3"> <fieldset id="buildyourform"><div class="fieldwrapper" id="field1"/> <script type="text/javascript"> $(function() { $("#ref").combobox({ minLengthToAutocomplete : 2, selected : function(event,ui) { var obj = []; $.each(obj, function(key,values) { if (values.method.length) { getMethod(values); } }); } }); function getMethod(obj) { var id = $("#ref").val(); var method = obj.method; var url = obj.url; var htmlname = obj.htmlname; $.getJSON(url, { action: method, id: id, htmlname: htmlname }, function(response) { $.each(obj.params, function(key,action) { if (key.length) { var num = response.num; if (num > 0) { $("#" + key).removeAttr(action); } else { $("#" + key).attr(action, action); } } }); $("select#" + htmlname).html(response.value); }); } });</script> <select id="ref" class="flat" name="ref"> <option value="-1"></option> <option value="2396">9984380 - Article Highrecomedly ART_001105 9984380</option> тут ещё дофига строчек материала... <option value="2402">9984895 - Funksystem data (Heinze) ART_001111 9984895</option> </select> <input type="text" id="stok" name="stock" size="10" value=""> </div /> </fieldset> <input type="button" value="Add Article" class="add" id="add" /> <input type="button" value="Delete" class="del" id="del" onclick="deleteRow(this.id); return false; /"> </td> И всё вроде работает на ура. Берёт fieldset и копирует мне его один к одному. Всё как задуманно. Есдинственное не перенимается Autocomplete... чтобы в следующем инпуте выбор происходил после второго знака. Есть варианты передать "зацепить" эту функцию по другому как-то?