我需要你帮助我为ERP Dolibarr做一个开发。 在ERP中,您可以创建新的报价(使用经典表单)。在此表单中,您可以定义客户名称,客户参考,付款方式等...我需要自动填写"#34;那些带有我从另一个已创建的商品中导出的信息的输入。例如,如果我的报价1有TOTO作为客户,我可以选择报价1,然后是客户名称,当我验证我的新报价中的输入时,会填充值" Toto"。
为此,我使用了ajax函数:
$('#exportToNewPropal').on('click', function () {
//alert("j'ai cliqué sur le bouton !");
$.ajax({
dataType: "json",
url: 'propal.php',
type: 'GET',
data: "propalId=" + $('#propalSource').val() + "&propalOption=" + $('#propalOption').val(),
success: function (data) {
$.each(data.table, function (index, value) {
var valueName = value.nameElt;
switch ($("[Name=" + valueName + "]").prop('tagName')) {
case "SELECT":
console.log("c'est un select");
console.log("Le name de l'input select est " + valueName);
console.log("La valeur de l'input select est " + value.value);
$('select[Name=' + valueName + ']').val(value.value);
break;
case "TEXTAREA":
console.log("c'est un textarea");
console.log("Le name de l'input est " + valueName);
console.log("La valeur de l'input est " + value.value);
$('textarea[Name=' + valueName + ']').val(value.value);
break;
default:
console.log("c'est un input");
console.log("Le name de l'input est " + valueName);
console.log("La valeur de l'input est " + value.value);
$('input[Name=' + valueName + ']').val(value.value);
break;
}
});
}
})
});
我的问题是,我必须填写信息的输入之一是您可以进行搜索的选项,对于那个只有我的代码不起作用。
这是来自ERP的HTML:
<div class="select2-drop select2-display-none select2-with-searchbox select2-drop-active" style="left: 512.5px; width: 100px; top: 254.438px; bottom: auto; display: block;" id="select2-drop">
<div class="select2-search">
<label for="s2id_autogen1_search" class="select2-offscreen"></label> <input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" class="select2-input" role="combobox" aria-expanded="true" aria-autocomplete="list" aria-owns="select2-results-1" id="s2id_autogen1_search" placeholder="" aria-activedescendant="select2-result-label-24">
</div>
<ul class="select2-results" role="listbox" id="select2-results-1">
<li class="select2-results-dept-0 select2-result select2-result-selectable select2-highlighted" role="presentation">
<div class="select2-result-label" id="select2-result-label-24" role="option"><span class="select2-match"></span></div></li>
<li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation">
<div class="select2-result-label" id="select2-result-label-25" role="option"><span class="select2-match"></span>TEST</div></li>
<li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation">
<div class="select2-result-label" id="select2-result-label-26" role="option"><span class="select2-match"></span>TIERS1</div></li>
<li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation">
<div class="select2-result-label" id="select2-result-label-27" role="option"><span class="select2-match"></span>TIERS2</div></li>
<li class="select2-results-dept-0 select2-result select2-result-selectable" role="presentation"><div class="select2-result-label" id="select2-result-label-28" role="option"><span class="select2-match"></span>TIERS3</div></li></ul></div>
以下是我为获取数据而采取的不同步骤: 首先,在我的页面card.php上,我获得了Dolibarr实现的功能列表:
Page card.php:
$list = $object->liste_array();
function func($x){
return $x;
}
$listPropal = array_map(func, $list);
然后我在优惠中添加一行,根据我的优惠列表&gt;添加从不同优惠中选择信息的可能性。 $ listPropal:
Page card.php:
print '<tr><td>Proposition source</td><td colspan="2"><select name="propalSource" id="propalSource">';
print '<option value="0" selected> </option>';
foreach($listPropal as $elements){
print '<option value="' . $elements['id']. '">' . $elements['ref'] . '</option>';
}
print '</select> <select
name="propalOption" id="propalOption">
<option value="0"> </option>
<option value="ref_client">Référence client</option>
<option value="fk_soc">Tiers</option>
<option value="fin_validite">Durée de validité</option>
<option value="fk_cond_reglement">Conditions de règlement</option>
<option value="fk_mode_reglement">Mode de règlement</option>
<option value="fk_input_reason">Origine</option>
<option value="fk_availability">Délai de livraison</option>
<option value="fk_shipping_method">Méthode d’expédition</option>
<option value="date_livraison">Date de livraison</option>
<option value="note_public">Note publique</option>
<option value="note_private">Note privée</option>
<option value="type_presta">Type de prestation</option>
<option value="agence">Agence</option>
<option value="margin_rate_service">Taux de marge service</option>
<option value="margin_rate_product">Taux de marge produit</option>
</select> <input id="exportToNewPropal" type="button" class="button" value="Valider">';
我的ajax函数调用propal.php页面,我在其中将我的元素名称之间的关联数组放入数据库和输入名称,并且我在成功的情况下发送到我的ajax函数名称我的输入(&#34; nameElt \&#34;:\&#34; {$ array [$ propalOption]} \&#34;),我输入的属性(\&#34; {$ propalOption} \&#34;,\&#34;值\&#34;)及其值(&#34;值\&#34;:\&#34; {$ list_propal [0] [$ propalOption]} \ &#34)
。页面propal.php:
$propalId = GETPOST('propalId');
$propalOption = GETPOST('propalOption');
$list_propal = $propalSource->liste_propal($propalId);
//Tableau associatif: nom dans la base de données => name de l'input
$array = array(
'ref_client' => 'ref_client' ,
'fk_soc' => 'socid',
'fin_validite' => 'duree_validite',
'fk_cond_reglement' => 'cond_reglement_id',
'fk_mode_reglement' => 'mode_reglement_id',
'fk_availability' => 'availability_id',
'fk_shipping_method' => 'shipping_method_id',
'date_livraison' => 'date_livraison',
'note_public' => 'note_public',
'note_private' => 'note_private',
'fk_input_reason' => 'demand_reason_id',
'margin_rate_service' => 'margin_rate_service',
'margin_rate_product' => 'margin_rate_product'
);
// IF SUCCESS SEND TO AJAX:
echo "{ \"table\": [";
if (array_key_exists($propalOption, $list_propal[0])){
echo "{ \"nameElt\":\"{$array[$propalOption]}\",\"attribute\": \"{$propalOption}\", \"value\" : \"{$list_propal[0][$propalOption]}\" }";
} else {
echo "{\"correspondance liste option\":aucune}";
}
echo "]}";
这段代码正常运行,这意味着我为所有输入填充了除了具有特定选择的值之外的所有值(参见上面的html)。
答案 0 :(得分:-1)
因此,根据我的理解,ajax返回相对于另一个订单的数据。您的目标是将此数据插入当前表单中的各种输入中 - 但选择不起作用...
如果是这种情况,我要强调的第一件事是case "SELECT"
你没有做任何任务,只记录!在另一个案例陈述中,你是......
答案 1 :(得分:-1)
如果您对从ajax调用获得的数据所做的更详细一点,那将是一件好事。根据你所写的内容,我认为你想这样做:
如果你在ajax中为select 2获取html,最好只提取li值及其名称或使用value作为名称来创建新的select。