1

jQuery のオートコンプリートを使用していますが、ソースがページ上の非表示の入力の値を参照するのに問題があります。

これは非表示の入力フィールドです。

<input type="hidden" id="array_activities" value="[{ label: 'Football', value: '1' }, { label: 'Tennis', value: '2' }, { label: 'Running', value: '3' }]">

そして、これはJavaScriptです:

$("#search").live("focus", function (event) {
    $(this).autocomplete({
        close: function( event, ui ) { area_input(); },
        source: $("#array_activities").val()
    });
});

しかし、何もオートコンプリートしません。

source オプションの値を明示的に隠し入力の値に変更すると (つまり'$("#array_activities").val()'

'[{ label: 'Football', value: '1' }, { label: 'Tennis', value: '2' }, { label: 'Running', value: '3' }]'),

それは正常に動作します。

何か案は?

4

1 に答える 1

1

ソースとして割り当てる前に解析する

source: JSON.parse( $("#array_activities").val() )

array of objectsソースはandであると予想されますnot a string

編集

JSON一重引用符を含む文字列は有効な構文ではありません。有効な構文を得るには、すべてのプロパティを二重引用符で囲む必要があります。

したがって、値を次のように変更します

value='[{ "label": "Football", "value": "1" },
      { "label": "Tennis", "value": "2" }, { "label": "Running", "value": "3" }]'

フィドル

コードをそのまま実行したい場合は、試してみてください

var arr = eval($("#array_activities").val());

しかし、eval を使用することは悪い習慣と見なされます。

詳細については

于 2013-06-18T21:53:48.503 に答える