2

jQuery UI オートコンプリートを連絡先フィールドに接続していますが、これは機能しますが、検索文字だけでなくユーザーが以前に選択した会社にも検索を制限するために、company_id を (動的に) 渡す必要があります。IE ユーザーが「jo」と入力すると、company_id 内にある「jo」を含むすべての連絡先が渡されます。

ちなみに、remote.php は ID と値を返すので、contact_name と contact_id の両方を設定できます。その部分は機能します。

company_id フィールドに渡す方法がわかりません。

    $( "#contact_name ).autocomplete({
        ソース: 'remote.php?t=contactSearch',
        minLength: minlen,
        select: function( イベント, ui ) {
             $( "#contact_id" ).val(ui.item.id );
        }
    });

ありがとう!

4

1 に答える 1

2

多くの調査と試行錯誤の後、これは私にとってはうまくいきます。

これが何をするか:
ユーザーはこのコードの前に会社を選択しました (表示されていません)。
以下のオートコンプリートには contact_name が添付され、company_id も渡されます。
remote.php は、部分的な検索条件を満たし、指定された会社に属する連絡先の ID と値の両方の配列を返します。ユーザーが値をクリックすると、連絡先の名前がオートコンプリートのフィールドに配置され (特別なコードはなく、オートコンプリートが自動的に実行します)、id が contact_id フィールドに配置されます。

        $( "#contact_name" ).autocomplete({
            ソース: 関数 (リクエスト、レスポンス) {
                $.getJSON ('remote.php',
                { term: request.term, company_id:$('#company_id').val() },
                応答 );
            }、
            select: function( イベント, ui ) {
                $( "#contact_id" ).val(ui.item.id );
            }
        });


remote.php の簡略化されたバージョンの外観は次のとおりです。


$myDataRows = 配列 ();
$search = addslashes($_REQUEST['term']);
$company_id = addslashes($_REQUEST['company_id']);

$sql = "SELECT c.contact_id as `id`, contact_name as`value` FROM 連絡先 c
    WHERE c.company_id = '$company_id' and c.contact_name LIKE '%$search%' ";

$result = mysql_query ($sql);

while ($row = mysql_fetch_assoc($result)) {
   array_push($myDataRows, $row);
}

$ret = json_encode ($myDataRows);

エコー $ret;

于 2010-12-18T00:49:13.667 に答える