0

jQuery-UIのオートコンプリートウィジェットを使用して、サーバーから返されたデータを取得してフォームに表示できません。(入力要素の下に狭い「リターンボックス」が形成されますが、入力されません)

最新バージョンのjQueryとjQuery-UIを実行しており、返されるデータは検証済みのJSON(http://jsonlint.com/)です。バリデータープラグイン(同様の問題を引き起こす可能性があります)は私のページの一部ではありません。

どんな助けでもありがたいことに受け取られます。

ありがとう/ブルース

私のjsは:

var ac_config = {
    source: "scripts/ajax_studentroll.asp?id=do_name",
    select: function(event, ui){
        $("#s_name2").val(ui.item.sname);
    },
    minLength:2
};
$("#s_name2").autocomplete(ac_config);

私のhtmlは:

<form action="scripts/ajax_studentroll.asp?id=getinfo" id="getStudentInfo" method="post">
    <p>
        <label class="label20" for="s_name">Enter the user's first name or surname,</label>
        <input id="s_name2" name="s_name2" value="" type="text" />&nbsp;
        <button class="fg-button_s ui-state-default ui-corner-all" type="submit">Get!</button>
    </p>
</form>

返されるJSONの形式は次のとおりです。

[{"sname":"David Jones"},{"sname":"David McKay"},{"sname":"David Perry"}]
4

2 に答える 2

1

細かいマニュアルから:

期待されるデータ形式

ローカルデータ、URL、またはコールバックからのデータには、次の2つのバリエーションがあります。

  • 文字列の配列:
    [ "Choice1", "Choice2" ]
  • labelおよびvalueプロパティを持つオブジェクトの配列:
    [ { label: "Choice1", value: "value1" }, ... ]

したがって、JSONがウィジェットが期待する形式で戻ってこないので、一致する文字列の単純な配列を返すようにサーバーを調整する必要があります。

["David Jones","David McKay","David Perry"]
于 2012-05-02T02:18:48.680 に答える
1

autocompleteウィジェットは値の配列を期待します。

カスタムデータ形式を使用する場合は、 http://jqueryui.com/demos/autocomplete/#custom-data_renderItemに示すようにオートコンプリートインスタンスをオーバーライドする必要があります([ソースの表示]をクリックします)。そのページのリンクをクリックして、入力からインスタンスを取得し、オーバーライドする方法に注目してください).data()_renderItem

于 2012-05-02T02:19:18.573 に答える