Каскадный раскрывающийся список автозаполнения JavaScript / ввод

#javascript #php #jquery #drop-down-menu

#javascript #php #jquery #выпадающее меню

Вопрос:

У меня есть код для зависимого выпадающего списка с автозаполнением. Я могу видеть значения в выпадающем списке по первым буквам, введенным при вводе. Как заставить его показывать, соответствует ли какая-либо буква, введенная во ввод, любым буквам значений в массиве, и выделить буквы, которые совпадают. Смотрите пример здесь, на Github.

  var states = {
  'Color': ['red', 'black', 'yellow', 'green', ],
  'Numbers': ['one', 'two', 'three', 'four']
};

function initDialog() {
  clearDialog();
  var $locations = jQuery('#location');

  jQuery(document).on("change", "#country", function() {
        var country = $(this).val(),
          lcns = states[country] || [];

        var html = jQuery.map(lcns, function(lcn) {
          return '<div>'   lcn   '</div>'
        }).join('');
        $locations.html(html)
        if (jQuery('#country').val() == "color") {

          function match(str) {

            str = str.toLowerCase();
            clearDialog();
            for (var i = 0; i < states.color.length; i  ) {
              if (states.color[i].toLowerCase().startsWith(str)) {
                jQuery('.dialog').append('<div>'   states.color[i]   '</div>');
              }
            }
          }
          var states = {
            'Color': ['red', 'black', 'yellow', 'green', ],
            'Numbers': ['one', 'two', 'three', 'four']
          };

          function initDialog() {
            clearDialog();
            var $locations = jQuery('#location');

            jQuery(document).on("change", "#country", function() {
                  var country = $(this).val(),
                    lcns = states[country] || [];

                  var html = jQuery.map(lcns, function(lcn) {
                    return '<div>'   lcn   '</div>'
                  }).join('');
                  $locations.html(html)
                  if (jQuery('#country').val() == "color") {

                    function match(str) {

                      str = str.toLowerCase();
                      clearDialog();
                      for (var i = 0; i < states.color.length; i  ) {
                        if (states.color[i].toLowerCase().startsWith(str)) {
                          jQuery('.dialog').append('<div>'   states.color[i]   '</div>');
                        }
                      }
                    }
  

Комментарии:

1. Опубликованный вами URL-адрес не существует.

2. Похоже, что в последней части вашего кода есть функция, match по некоторым причинам определенная в if() блоке. Почему это так? Эта функция только что определена, в данном коде она в любом случае не выполняется.

3. это только для зависимого выпадающего списка, код соответствия букв начинается с for()

4. Ваш код кажется очень неполным

5. используйте это в своем условии if в состояниях цикла for.color[i].toLowerCase().содержит(str.toLowerCase())