4

JQuery を使用してオートコンプリートを実装しました。データを選択すると結果テーブルに格納されます。選択後、オートコンプリート テキストボックスをクリアする必要がありますが、これはできません。同じものを検索し、選択後にJquery Autocompleteでこのクリアテキストボックスを取得しましたが、どこに配置すればよいかわかりませんでした。助けてください...私のコードは次のとおりです。

$(function() {
    function log( message ) {


        $( "<div>" ).text( message ).prependTo( "#log" ).click(function(o){
            $(this).remove();
        });
        $( "#log" ).scrollTop( 0 );

    }


    $( "#poolName" ).autocomplete({
        source: function( request, response ) {
            $.ajax({
                url: "/DataWeb/getPoolName",
                type : 'post',
                dataType: 'json',
                data: { name_startsWith: request.term },
                success: function( data ) {
                    console.log(data);
                     response( $.map( data, function( item ) {
                        return {
                             label: item.poolName,
                             value: item.poolName
                        }
                    })); 
                }
            });
        },
        minLength: 1,
        select: function( event, ui ) {
            log( ui.item ?
                  ui.item.label :
                "Nothing selected, input was " + this.value);
        },
        open: function() {
            $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
        },
        close: function() {
            $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
        }

    });

});
4

5 に答える 5

3
$( "#poolName" ).autocomplete({
    source: function( request, response ) {
        $.ajax({
            url: "/DataWeb/getPoolName",
            type : 'post',
            dataType: 'json',
            data: { name_startsWith: request.term },
            success: function( data ) {
                console.log(data);
                 response( $.map( data, function( item ) {
                    return {
                         label: item.poolName,
                         value: item.poolName
                    }
                })); 
            }
        });
    },
    select: function (e, i) {
       $('#poolName').val('');   
       return false;    
    }

    ,minLength: 1,
    select: function( event, ui ) {
        log( ui.item ?
              ui.item.label :
            "Nothing selected, input was " + this.value);
    },
    open: function() {
        $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
    },
    close: function() {
        $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
    }

});

});
于 2012-11-08T05:51:37.120 に答える
2

return false;内側のselect:句を使用してみてください。

select: function( event, ui ) {
            log( ui.item ?
                  ui.item.label :
                "Nothing selected, input was " + this.value);
            return false;
        },
于 2012-11-08T05:49:51.163 に答える
1

このドキュメントを試してみました.getElementById( "poolName")。value = ""; そしてそれは働いています。

function log( message ) {
        document.getElementById("poolName").value="";

        $( "<div>" ).text( message ).prependTo( "#log" ).click(function(o){
            $(this).remove();
        });
        $( "#log" ).scrollTop( 0 );

    }
于 2012-11-08T06:40:11.120 に答える
0

フィールドをクリアしてfalseを返す必要があることがわかりました

select: function(ev, ui) {
  console.log(this, ui.item)
  $(this).val('')
  return false
},
于 2015-03-19T18:01:33.130 に答える