JQuery UI Autocomplete бірінші және соңғы өрістерінде

Мен біреудің осы мәселені шешетініне сенімдімін, бірақ мен жауап таба алмаймын. Автотолтыру көзі бар 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-ды теру Джон Смит пен Джимоти Дуды көрсететін болады, бірақ екінші өрістегі S-ды теру тек Стюарт Браун емес, Джон Смит көрсетеді.

How it works currently: http://jsfiddle.net/HSYYz/1/

1
Карп. Менің есімімді ақылмен таңдаған жоқпын. Мен өз атамдарды түзетіп, сілтемені қосамын.
қосылды автор notblakeshelton, көзі
Карп. Менің есімімді ақылмен таңдаған жоқпын. Мен өз атамдарды түзетіп, сілтемені қосамын.
қосылды автор notblakeshelton, көзі
Карп. Менің есімімді ақылмен таңдаған жоқпын. Мен өз атамдарды түзетіп, сілтемені қосамын.
қосылды автор notblakeshelton, көзі
@ j08691 бұл жақсы. Менің ойымша, бұл іс жүзінде анықталды. Мен жұмыс істеген кезде жауап жазамын.
қосылды автор notblakeshelton, көзі
@ j08691 бұл жақсы. Менің ойымша, бұл іс жүзінде анықталды. Мен жұмыс істеген кезде жауап жазамын.
қосылды автор notblakeshelton, көзі
@ j08691 бұл жақсы. Менің ойымша, бұл іс жүзінде анықталды. Мен жұмыс істеген кезде жауап жазамын.
қосылды автор notblakeshelton, көзі
@ j08691 бұл жақсы. Менің ойымша, бұл іс жүзінде анықталды. Мен жұмыс істеген кезде жауап жазамын.
қосылды автор notblakeshelton, көзі
Уг, менің жаман. Мен сіздің мәселеңізді дұрыс түсінемін. Төменірек сызық болса да, автотолтырудың сіз іздеген мәтіннің қандай бөлігін білуін күтуге болмайды - ол бүкіл жолды пайдаланады. Егер сіз оны қаламасаңыз, оны нақты айтыңыз. Алдымен кірісті бөлуді қарастырғыңыз келуі мүмкін.
қосылды автор j08691, көзі

8 жауаптар

Функцияларды бастапқы опцияға қойып, автотолтыру виджетін таңдау керек болды.

$("#firstname, #lastname").autocomplete({
  source: function(request, response) {
    term1 = $("#firstname").val();
    term2 = $("#lastname").val();
    names2 = new Array();
    i = 0;
    while (i < names.length) {
      namesSplit = names[i].split(RegExp(" +"));
      j = 2;
      while (j < namesSplit.length) {
        namesSplit[1] += " " + namesSplit[j];
        j++;
      }
      if (namesSplit[0].match(term1) && namesSplit[1].match(term2)) {
        names2.push(names[i]);
      }
      i++;
    }
    response(names2);
  },
  select: function(event, ui) {
    uiSplit = ui.split(RegExp(" +"));
    $("#firstname").val(uiSplit[0]);
    $("#lastname").val(uiSplit[1]);
  }
});

Кешіріңіз, егер кодекс біраз өрескел болса; Мен оны кофейнстен айырбастауға тура келді.

1
қосылды

Функцияларды бастапқы опцияға қойып, автотолтыру виджетін таңдау керек болды.

$("#firstname, #lastname").autocomplete({
  source: function(request, response) {
    term1 = $("#firstname").val();
    term2 = $("#lastname").val();
    names2 = new Array();
    i = 0;
    while (i < names.length) {
      namesSplit = names[i].split(RegExp(" +"));
      j = 2;
      while (j < namesSplit.length) {
        namesSplit[1] += " " + namesSplit[j];
        j++;
      }
      if (namesSplit[0].match(term1) && namesSplit[1].match(term2)) {
        names2.push(names[i]);
      }
      i++;
    }
    response(names2);
  },
  select: function(event, ui) {
    uiSplit = ui.split(RegExp(" +"));
    $("#firstname").val(uiSplit[0]);
    $("#lastname").val(uiSplit[1]);
  }
});

Кешіріңіз, егер кодекс біраз өрескел болса; Мен оны кофейнстен айырбастауға тура келді.

1
қосылды

Функцияларды бастапқы опцияға қойып, автотолтыру виджетін таңдау керек болды.

$("#firstname, #lastname").autocomplete({
  source: function(request, response) {
    term1 = $("#firstname").val();
    term2 = $("#lastname").val();
    names2 = new Array();
    i = 0;
    while (i < names.length) {
      namesSplit = names[i].split(RegExp(" +"));
      j = 2;
      while (j < namesSplit.length) {
        namesSplit[1] += " " + namesSplit[j];
        j++;
      }
      if (namesSplit[0].match(term1) && namesSplit[1].match(term2)) {
        names2.push(names[i]);
      }
      i++;
    }
    response(names2);
  },
  select: function(event, ui) {
    uiSplit = ui.split(RegExp(" +"));
    $("#firstname").val(uiSplit[0]);
    $("#lastname").val(uiSplit[1]);
  }
});

Кешіріңіз, егер кодекс біраз өрескел болса; Мен оны кофейнстен айырбастауға тура келді.

1
қосылды

Функцияларды бастапқы опцияға қойып, автотолтыру виджетін таңдау керек болды.

$("#firstname, #lastname").autocomplete({
  source: function(request, response) {
    term1 = $("#firstname").val();
    term2 = $("#lastname").val();
    names2 = new Array();
    i = 0;
    while (i < names.length) {
      namesSplit = names[i].split(RegExp(" +"));
      j = 2;
      while (j < namesSplit.length) {
        namesSplit[1] += " " + namesSplit[j];
        j++;
      }
      if (namesSplit[0].match(term1) && namesSplit[1].match(term2)) {
        names2.push(names[i]);
      }
      i++;
    }
    response(names2);
  },
  select: function(event, ui) {
    uiSplit = ui.split(RegExp(" +"));
    $("#firstname").val(uiSplit[0]);
    $("#lastname").val(uiSplit[1]);
  }
});

Кешіріңіз, егер кодекс біраз өрескел болса; Мен оны кофейнстен айырбастауға тура келді.

1
қосылды

Менде бірдей проблема болды, бірақ, сонымен қатар, аттардың сәйкестігі үшін қолдау қажет болды. Мен үш функцияны аяқтадым және әр түрлі жағдайларды сәйкестендіру үшін регрессияны өзгертуді аяқтадым.

$( "#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 );
            }) );
       }
    });
0
қосылды

Менде бірдей проблема болды, бірақ, сонымен қатар, аттардың сәйкестігі үшін қолдау қажет болды. Мен үш функцияны аяқтадым және әр түрлі жағдайларды сәйкестендіру үшін регрессияны өзгертуді аяқтадым.

$( "#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 );
            }) );
       }
    });
0
қосылды

Менде бірдей проблема болды, бірақ, сонымен қатар, аттардың сәйкестігі үшін қолдау қажет болды. Мен үш функцияны аяқтадым және әр түрлі жағдайларды сәйкестендіру үшін регрессияны өзгертуді аяқтадым.

$( "#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 );
            }) );
       }
    });
0
қосылды

Менде бірдей проблема болды, бірақ, сонымен қатар, аттардың сәйкестігі үшін қолдау қажет болды. Мен үш функцияны аяқтадым және әр түрлі жағдайларды сәйкестендіру үшін регрессияны өзгертуді аяқтадым.

$( "#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 );
            }) );
       }
    });
0
қосылды