Javascript jQueryUI自动选择问题

Javascript jQueryUI自动选择问题,javascript,jquery,jquery-ui-autocomplete,Javascript,Jquery,Jquery Ui Autocomplete,例如,如果我在此处键入错误,并输入3而不是4,我如何重新启动自动完成功能,以便在删除错误的id值并输入4后,我获得以4开头的id选项? 按照现在的情况,删除3。。。。。id和输入4我没有更多的选择 #!/usr/bin/env perl use warnings; use 5.014; use utf8; use Mojolicious::Lite; use DBI; my $table = 'my_test_table'; my $dbh = DBI->connect( 'dbi:SQ

例如,如果我在此处键入错误,并输入3而不是4,我如何重新启动自动完成功能,以便在删除错误的id值并输入4后,我获得以4开头的id选项? 按照现在的情况,删除3。。。。。id和输入4我没有更多的选择

#!/usr/bin/env perl
use warnings;
use 5.014;
use utf8;
use Mojolicious::Lite;
use DBI;

my $table = 'my_test_table';
my $dbh = DBI->connect( 'dbi:SQLite:dbname=my_test_db.db', '', '', 
    { RaiseError => 1, PrintError => 0, AutoCommit => 1, sqlite_unicode => 1, } 
) or die $DBI::errstr;
$dbh->do( "CREATE TEMP TABLE $table ( firstname TEXT, lastname TEXT, id INTEGER UNIQUE )" );

my $sth = $dbh->prepare( "INSERT INTO  $table ( firstname, lastname, id ) VALUES ( ?, ?, ?)" );
$sth->execute( 'Charlie', 'Harper', '321456' );
$sth->execute( 'Rachel Karen', 'Green', '253422' );
$sth->execute( 'John', 'Dorian', '433542' );
$sth->execute( 'Homer', 'Simson', '433541' );

get '/eingabe';

get '/search_db/:opt' => sub {
    my $self = shift;
    my $opt = $self->param( 'opt' );
    my $term = $self->param( 'term' );
    my $ref;
    if ( $opt eq 'autocomplete' ) {
        my $sth = $dbh->prepare( "SELECT id FROM $table WHERE id LIKE ?" );
        $sth->execute( $term . '%');
        while ( my $row = $sth->fetchrow_arrayref() ) {
            push @$ref, @$row;
        }
    } elsif ( $opt eq 'row' ) {
    $ref = $dbh->selectall_arrayref( "SELECT * FROM $table WHERE id == ?", { Slice => {} }, $term );
    die scalar @$ref if @$ref != 1;
    $ref = $ref->[0];
    }        
    $self->render( json => $ref );
};

app->start;

__DATA__
@@ eingabe.html.ep
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js"></script>
<script type="text/javascript">
    $( document ).ready( function() {
        var searchID = '#id';
        $( searchID ).autocomplete({
            source: function( request, response ) {
                $.getJSON( '/search_db/autocomplete', request, function( dataFromServer ) {
                    var suggestions = [];
                    var len = dataFromServer.length;
                    for ( var i = 0; i < len; i++ ) {
                        suggestions.push( dataFromServer[i].toString() );
                    }
                    if ( len == 1 ) {
                        $( searchID ).autocomplete( 'disable' );
                        $.getJSON( '/search_db/row', { term : suggestions[0] }, function( data ) {
                            for ( var key in data ) {
                                if( data.hasOwnProperty( key ) ) {
                                    var input = document.getElementById( key );
                                    input.value = data[key];
                                }
                            }
                        });
                    }
                    response( suggestions );
                });
            },
            select: function( event, ui ) {
                $.getJSON( '/search_db/row', { term : ui.item.value }, function( data ) {
                    for ( var key in data ) {
                        if( data.hasOwnProperty( key ) ) {
                            var input = document.getElementById( key );
                            input.value = data[key];
                        }
                    }
                });
            },
            delay: 100
        });        
    });
</script>
</head>
<body>
<form>
    <table>
        <tr><td>Firstname:</td><td><input type="text" id="firstname" name="firstname" /></td></tr>
        <tr><td>Lastname:</td><td><input type="text" id="lastname" name="lastname" /></td></tr>
        <tr><td>ID:</td><td><input type="number" id="id" name="id" autofocus="on" /></td></tr>
    </table><br />
    <input type="submit" value="OK"/>
</form>
</body>
</html>
当我添加$searchID.autocomplete'enable'时;回应建议后; 效果更好

<script type="text/javascript">
    $( document ).ready( function() {
        var searchID = '#id';
        $( searchID ).autocomplete({
            source: function( request, response ) {
                $.getJSON( '/search_db/autocomplete', request, function( dataFromServer ) {
                    var suggestions = [];
                    var len = dataFromServer.length;
                    for ( var i = 0; i < len; i++ ) {
                        suggestions.push( dataFromServer[i].toString() );
                    }
                    if ( len == 1 ) {
                        $( searchID ).autocomplete( 'disable' );
                        $.getJSON( '/search_db/row', { term : suggestions[0] }, function( data ) {
                            for ( var key in data ) {
                                if( data.hasOwnProperty( key ) ) {
                                    var input = document.getElementById( key );
                                    input.value = data[key];
                                }
                            }
                        });
                    }
                    response( suggestions );
                    $( searchID ).autocomplete( 'enable' );  
                });
            },
            select: function( event, ui ) {
                $.getJSON( '/search_db/row', { term : ui.item.value }, function( data ) {
                    for ( var key in data ) {
                        if( data.hasOwnProperty( key ) ) {
                            var input = document.getElementById( key );
                            input.value = data[key];
                        }
                    }
                });
            },
            delay: 100
        });    
    });
</script>