4

我已经使用 JQuery 实现了自动完成,当我选择数据时,它会存储在结果表中,选择后,我需要清除我无法清除的自动完成文本框。搜索相同并在选择后在 Jquery Autocomplete 中得到了这个 Clear text 框,但我不知道在哪里放置它,而且在萤火虫中,我在函数(事件,ui)处遇到错误。请帮助...我的代码如下。

$(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: function( event, ui ) {
            log( ui.item ?
                  ui.item.label :
                "Nothing selected, input was " + this.value);
            return false;
        },
于 2012-11-08T05:49:51.163 回答
1

我试过这个 document.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

其他答案的问题是它没有 preventDefault 调用。

这将起作用:

select: function (e, i) {
   e.preventDefault();
   $('#poolName').val('');   
   return false;    
}
于 2013-05-27T23:17:22.100 回答
0

我发现我必须同时清除字段并返回 false

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