私はERP Dolibarrのためにやっている開発者の支援が必要です。 ERPでは、新しいオファー(古典的なフォーム)を作成することができます。このフォームでは、得意先名、得意先コード、支払モードなどを定義することができます。すでに入力した別のオファーからエクスポートする情報を入力に「自動的に」入力する必要があります。たとえば、私のオファー1が顧客としてTOTOを持っている場合、オファー1を選択してから顧客名を選択し、新しいオファーの入力を検証するときに値 "トート"を入力します。AJAX関数はselect2-drop-mask要素では機能しません
その私が使用した目的や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です:私は、私のページcard.phpに まず、:<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>
EDITここ
は、私は私のデータを取得するためにやってるdiferentステップでありますDolibarr実現される機能と私のオファーのリストを取得:
ページcard.php:
$list = $object->liste_array();
function func($x){
return $x;
}
$listPropal = array_map(func, $list);
その後、私は$ listPropal>オファーの私のリストに基づいて、さまざまなプランからの情報を選択する可能性を追加するための申し出に行を追加します。
ページ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">';
マイアヤックス関数はpropal.phpページを呼び出します。このページでは、データベースへの要素の名前と入力名の間の連想配列を作成しました。成功した場合、ajax関数に入力した名前( "nameElt \ ":\" {$ array [$ propalOption]} \ ")、その入力値(\" {$ propalOption} \ "、\" value \ ")とその値(" value \ ":\" {$ list_propal [0] [$ propalOption]} \ ")。
ページ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 "]}";
、私は特定の選択と1以外のすべてのための良好な値(上記のHTMLを参照)で、私の入力を埋める意味。
申し訳ありませんが、あなたの目標は何か、何が問題になるのか理解できません...コンソールに正しい値を記録していますか?データには何が含まれていますか?あなたはSELECTの場合、どの要素にも割り当てられていないことに気がつきましたか?また、HTMLを複数行にわたって適切にフォーマットできますか? –
@Lilyあなたはそれが動作していないことをどのように知っていますか? < - おそらく、その質問に対する答えはあなたの投稿に含めるべきです...単に「それはうまくいかない」と誰かを助けていないと言っていますか?選択**のどの部分が**特に機能していないのですか? – ProEvilz
申し訳ありませんが、選択したコードが不足しているため編集しました。私のコピーはこの部分では機能しませんでした。 @ProEvilz:「機能しない」とは、上記のHTMLを入れたものを除いて、すべての入力を満たすことができるということです。私のすべての入力/選択とテキスターは機能します(私がエクスポートしたい情報は良い入力で充分に満たされています)が、これは何も起こりません。それは特別な選択だからだと思われる。私はそれがもっとはっきりしていることを願っています... – Lily