オートコンプリートの選択イベントで、あなたは、要素の値プロパティとしてラベルを設定している#site_client_firstすなわち、ここで$( "#のsite_client_first")。valを(ui.item.label) 。したがって、$( "#site_client_first")。val()を代入してスパンのinnerHTMLを設定しようとすると、item.valueではなくラベルが常に得られます。
以下のコードを試してください。 $( "#site_client_first")に属性 'itemValue'を追加しました。これはアイテムの値と$( "#site_client_first")を保持します。val()はアイテムのラベルを保持します。
スパンinnerhtmlを設定するときは、アイテムの値である$( "#site_client_first")。attr( "itemValue")を割り当てます。
<input class="form-control" name="site[client]" id="site_client_first" itemValue="100" />
HTML変更で上記の行に変更を加えます。 あなたの最終的なHTMLはbelowsの通りです:
<input class="form-control" name="site[client]" id="site_client_first" itemValue="100" />
<button onclick="getValue()">Get</button>
<span id="svalue"></span>
スクリプトはここに行く:
$(document).ready(function() {
var listeClients = [{ "value": 1, "label": "Orange"}, {
"value": 2,
"label": "Blue"
}];
$("#site_client_first").autocomplete({
source: listeClients,
select: function(event, ui) {
$("#site_client_first").val(ui.item.label);
$("#site_client_first").attr("itemValue", ui.item.value);
return false;
}
});
})
var getValue = function() {
document.getElementById("value").innerHTML = $("#site_client_first").attr("itemValue");
}
function getValue() {
document.getElementById("value").innerHTML = $("#site_client_first").attr("itemValue");
}
コードは期待どおりに動作するはずです。 '.val()'は値を返す適切な方法です。 https://jsfiddle.net/で問題を再現できますか? –
私はこれを試してみたが、それは動作しません... https://jsfiddle.net/cabri89/66fym60o/ –
@NicolasCabridens:あなたは、すべての作品「''
ではありませんラップ」JSFiddleに「荷重タイプ」オプションに設定した場合:https://jsfiddle.net/e2pbLggs/1/ –