0

jqgrid でのオートコンプリートの実装に問題があります。この質問を現在対応していないサイトに基づいて行うまで、エイリアスを調査してきました。問題はこれです。開発中のアプリケーション全体でオートコンプリートを数回使用する必要があります。そして今、私はこの機能を持っています:

Javascript:

function autocomplete_element(value, options) {
    var $ac = $('<input type="text"/>');
    $ac.val(value);
    $ac.autocomplete({
    source: function(request, response) 
    {        
        $.getJSON("autocomplete.php?id=estrategico",
            { q: request.term }, response);
    }
    });
    return $ac;
}

Jqグリッド:

jQuery("#obj_oper_org").jqGrid({
    (...)
        {name:'COD_OBJ_EST',index:'COD_OBJ_EST', hidden: true, editable:true, editrules:{required:true, edithidden:true}, edittype : 'custom', editoptions : {'custom_element' : autocomplete_element}},

URLを常に変更する必要があるため、フィールドごとに同じ関数を永遠に繰り返さないように、javascript関数にパラメーターを渡すことを意図していました。ジャンルの何かを作ることは可能ですか?質問で申し訳ありませんが、私はJavaScriptの経験があまりないので、いくつかの困難があります

4

1 に答える 1

3

まず第一に、edittype : 'custom'jQuery UI Autocomplete を使用できるようにするために使用する必要はありません。その代わりに、dataInit.

myAutocompleteたとえば、次のような関数を定義できます

function myAutocomplete(elem, url) {
    setTimeout(function () {
        $(elem).autocomplete({
            source: url,
            minLength: 2,
            select: function (event, ui) {
                $(elem).val(ui.item.value);
                $(elem).trigger('change');
            }
        });
    }, 50);
}

そして使用する

{ name:'COD_OBJ_EST', hidden: true, editable: true,
    editoptions: {
        dataInit: function (elem) {
            myAutocomplete(elem, "autocomplete.php?id=estrategico");
        }
    }}

サーバーに送信されるパラメータの名前は、現在使用しているterm名前ではなく、標準の名前になることに注意してください。q個人的には、パラメーターのデフォルト名を変更する必要はないと思います。

于 2012-12-18T12:09:29.733 に答える