在jquery中自动完成选择后清除文本框

时间:2012-11-08 05:40:45

标签: jquery jquery-ui jquery-autocomplete

我已经使用JQuery实现了自动完成功能,当我选择数据时,它会存储在结果表中,选择之后,我需要清除我无法完成的自动完成文本框。搜索相同并获得此Clear text box in Jquery Autocomplete after selection,但我不知道将它放在哪里以及在firebug中,我在函数(事件,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" );
        }

    });

});

5 个答案:

答案 0 :(得分: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" );
    }

});

});

答案 1 :(得分:2)

尝试在select:子句中使用return false;

select: function( event, ui ) {
            log( ui.item ?
                  ui.item.label :
                "Nothing selected, input was " + this.value);
            return false;
        },

答案 2 :(得分:1)

我试过这个文档.getElementById(“poolName”)。value =“”;它正在发挥作用。

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

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

    }

答案 3 :(得分:0)

其他答案的问题在于它没有进行preventDefault调用。

这将有效:

select: function (e, i) {
   e.preventDefault();
   $('#poolName').val('');   
   return false;    
}

答案 4 :(得分:0)

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

select: function(ev, ui) {
  console.log(this, ui.item)
  $(this).val('')
  return false
},