1

他の誰かがこの問題を抱えていると思いますが、どこにも答えが見つからないようです。同じオートコンプリート ソースを持つ、名字と姓の 2 つの入力フィールドが必要です。ユーザーが名と姓のフィールドに入力すると、オートコンプリート ドロップダウンで、名を名のフィールドに、姓を名のフィールドに一致させてフィルター処理する必要があります。

私のコードは現在、両方のフィールドにオートコンプリートを実装しているだけです。

 $(function() {
   var names = ["John Smith", "Jimothy Doe", "Stuart Brown"];
   $( "#firstname" ).autocomplete({
   source: names
   });
   $( "#lastname" ).autocomplete({
   source: names
   });
 });


 <input type='text' id='firstname' />
 <input type='text' id='lastname' />

最初のフィールドに J を入力すると、John Smith と Jimothy Doe が表示されますが、2 番目のフィールドに S を入力すると、Stuart Brown ではなく、John Smith のみが表示されます。

現在の仕組み: http://jsfiddle.net/HSYYz/1/

4

2 に答える 2

0

私は同じ問題を抱えていましたが、ミドルネームの一致のサポートも必要でした. 私は3つの関数を作成し、正規表現をさまざまなケースに合わせて変更するだけでした。

$( "#firstnameInput" ).autocomplete({
        source: function( request, response ) {
            //matches first letter of the whole name
            var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( request.term ), "i" );
            response( $.grep( fullnavnArray, function( item ){
                return matcher.test( item );
            }) );
       }
    });

    $( "#middlenameInput" ).autocomplete({
        source: function( request, response ) {
            //matches "space" name "space" 
            var matcher = new RegExp( "\\s" + $.ui.autocomplete.escapeRegex( request.term ) +"\\w+\\s", "i" );
            response( $.grep( fullnavnArray, function( item ){
                return matcher.test( item );
            }) );
       }
    });

    $( "#lastnameInput" ).autocomplete({
        source: function( request, response ) {
            //matches "space" name  
            var matcher = new RegExp( "\\s" + $.ui.autocomplete.escapeRegex( request.term )+"\\w+$", "i" );
            response( $.grep( fullnavnArray, function( item ){
                return matcher.test( item );
            }) );
       }
    });
于 2017-04-26T11:10:08.663 に答える