0

オートコンプリートを使用しています

http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/

その下には 2 つのページがindex.phpあり、ajx_page.php

index.php

<form name="send_coup_ajx_form" id="send_coup_ajx_form" method="post">

    <select name="member_type" id="member_type">
        <option value="customer_type">Customer</option>
        <option value="BPartner_type">Business Partner</option>                
    </select>

    <input type="text" name="sel_rad" id="resultant_text" />

    <input type="submit" name="submit" value="go" />

</form>


<script type="text/javascript">
    $(document).ready(function(){


        $("#resultant_text").autocomplete("ajx_page.php", {
            width: 260,
            matchContains: true,
            //mustMatch: true,
            //minChars: 0,
            //multiple: true,
            //highlight: false,
            //multipleSeparator: ",",
            selectFirst: false
        });

    });

</script>

そして以下のコード

ajx_page.php

<?php
    $select_type = $_GET['member_type'];
    $type = $_GET['sel_rad'];
?>

テキストボックスに入力すると、次のようなエラーが表示されます

Notice: Undefined index: member_type in ajx_page.php on line 2

つまりmember_type、そのページには入っていません..

そして、このコードをすべてコメントして、以下のコードを入れるとajx_page.php

<?php
    echo "Name1\n";
    echo "Name2\n";
    echo "Name3\n"
?>

オートコンプリート機能リストを表示しています。しかし、そのオブジェクトの値を取得したいとき、member_typeそれはエラーを言っています..

このオートコンプリート プラグインを使用して追加の値を渡すにはどうすればよいですか

@veeTrain に Image to overwriting 問題を追加しました

ここに画像の説明を入力

4

2 に答える 2

1

オートコンプリートプラグインがこのタイプのシナリオを処理することを目的としているかどうかはわかりません。

ただし、これらの値を手動でphpスクリプトに渡したい場合は、非常に簡単です(少なくとも、2つのフィールドのみを送信しようとしているこのシナリオでは)。

var memberType = $("#member_type>option:selected").val();
var selRad = $("#resultant_text").val();
$("#resultant_text").autocomplete("ajx_page.php?member_type="+memberType+"&sel_rad="+selRad, {
//...

しかし、これはおそらくあなたが探している答えではありません。

更新:値を送信するための構文が機能していることをうれしく思います。

重複するIDが印刷されているようですが、「太字」とはどういう意味ですか?どうやら、2番目のオートコンプリート候補を作成するために正しい区切り文字を使用していないようです。オートコンプリートハンドラーがアイテム間で何を描画したいのかわかりません。アイテムの1つが見つからなかったため、Undefinedが表示されている可能性があります。送信される内容をデバッグするには、ブラウザの開発ツールを使用する必要があります。

また、ではなくオプションのテキストが必要な場合は、選択ドロップダウンではなくvalueにアクセスする必要があります。.text().val()

更新この投稿には、オートコンプリートが期待していることについて何か言いたいことがあるかもしれません。

于 2012-04-27T13:05:00.457 に答える
1

私は、bassistance のオートコンプリートに追加のパラメーターを渡すと思います。唯一の方法は、autocomplete.js ファイルを変更することです。以前も似たようなことをしましたが、その方法はかなりハードコーディングされています。参考のために以下に投稿します(376行目あたりです):

$.ajax({
    // try to leverage ajaxQueue plugin to abort previous requests
    mode: "abort",
    // limit abortion to this input
    port: "autocomplete" + input.name,
    dataType: options.dataType,
    url: options.url,
    data: $.extend({
        member_type: ($("#member_type").length != 1)?$("#member_type").val():-1,
        q: lastWord(term),
        limit: options.max
    }, extraParams),
    success: function(data) {
        var parsed = options.parse && options.parse(data) || parse(data);
        cache.add(term, parsed);
        success(term, parsed);
    }
});

元のコードの 10 行目に 1 行だけ追加しましたmember_type: ...。そのページでオブジェクトが見つからない場合は、javascript エラーを防ぐために「-1」を渡すことに注意してください。それが役に立てば幸い!

于 2012-04-27T12:50:23.543 に答える