2

У меня есть страница с полными переключателями, которые я хотел бы иметь возможность прокручивать, а затем выбирать параметры на основе ввода с клавиатуры. Я надеюсь, что клавиатура будет работать на радиообменах так же, как она будет работать на выпадающих меню (ввод буквы «G» автоматически выбирает первый вариант, который начинается с «G»)Выбор опции переключателя на основе ввода с клавиатуры

Есть ли плагин jquery, который может помочь мне в этом, или мне нужно собрать функциональность с нуля. К сожалению, согласно запросу клиента, параметры должны оставаться в формате radobutton (без выпадающего списка), а встроенные вкладки/клавиши со стрелками/функциональные возможности пробела недостаточно.

Благодаря

+0

Кажется, что не нашел ничего заранее подготовленного, я отправлю ссылку здесь, если у меня появится возможность построить плагин, достойный публикации. – Mercurybullet

ответ

3

Вот некоторые примеры кода, который вы могли бы использовать. По мере необходимости добавьте свои собственные части Case, поместите свои селекторы в соответствие с вашей структурой.

Один прошел текущий выбор, другой - нет. Используйте, как пожелаете, и укажите, что вам нужно.

/* handle special key press */ 
    function checkKey(e) 
    { 
     var shouldBubble = true; 
     switch (e.keyCode) 
     { 
      // user pressed the Tab           
      case 9: 
       { 
        $(".pickMyClass").toggleClass("pickSelectVisible"); 
        $("#someOtherClass").toggleClass('pickHighlight'); 
        shouldBubble = false; 
        break; 
       }; 
       // user pressed the Enter  
      case 13: 
       { 
        $(".pickMyClass").toggleClass("pickSelectVisible"); 
        $('.pickEntryArea').trigger('change'); /* we made changes so trigger it */ 
        $("#someOtherClass").toggleClass('pickHighlight'); 
        break; 
       }; 
       // user pressed the ESC 
      case 27: 
       { 
        $(".pickMyClass").toggleClass("pickSelectVisible"); 
        $("#someOtherClass").toggleClass('pickHighlight'); 
        break; 
       }; 
     }; 
     /* this propogates the jQuery event if true */ 
     return shouldBubble; 
    }; 
    /* handle special key press */ 
    function checkFieldKey(e, me) 
    { 
     var shouldBubble = true; 
     switch (e.keyCode) 
     { 

      // user pressed the Enter   
      case 13: 
       { 
        $(me).blur(); 
        $("#someSpecialSelect").focus(); 
        shouldBubble = false; 
        break; 
       }; 
     }; 
     /* this propogates the jQuery event if true */ 
     return shouldBubble; 
    }; 
    /* user pressed special keys while in Select */ 
    $(".someSelect").keydown(function(e) 
    { 
     return checkKey(e); 
    }); 
    /* user pressed special keys while in Select */ 
    $(".somethingOther").keydown(function(e) 
    { 
     return checkFieldKey(e, $(this)); 
    }); 
+0

Эта структура выглядит великолепно, и я могу ее использовать, если мне нужно что-то создать с нуля, но, к сожалению, я ищу что-то, что смотрит на текст, и проверяет ключи автоматически, а не на то, чтобы определить, как должен действовать каждый ключ. В основном ищет что-то, что я могу переместить в несколько мест, не меняя никакого кода, и он позволит переключателям реагировать на ввод с клавиатуры так же, как и выпадающие меню. – Mercurybullet

+1

Вы можете поставить случай для символов на месте, затем иметь общий процесс для управления реакцией на ключевые записи - и создать простой плагин из этого ... просто мысль. Это не должно быть так сложно. Я не искал плагин типа «радиосимвол». –

+1

Действительно, похоже, что вы хотите обрабатывать ключевые штрихи, такие как подключаемый модуль Autocomplete, но воздействовать на текст в переключателях - так что должно быть возможно извлечь обработку ключевого штриха из Autocomplete и создать там новый плагин , или использовать то, что я дал в качестве базовой начальной точки. –

2

Использование HTML, а не JQuery, браузеры имеют встроенный механизм для выбора вариантов формы для ввода с клавиатуры + клавиши-модификатора с помощью атрибута «Accesskey». Я уверен, что jQuery может взаимодействовать с этим методом, если это необходимо.

<p>To select with a keyboard, click "alt+a" or "alt+b"*</p> 
<form name="myForm" method="post"> 
    <input type="radio" accesskey="a" value="a" name="myRadio" /> Value A 
    <input type="radio" accesskey="b" value="b" name="myRadio" /> Value B 
    <input type="submit" name="submit" value="submit" /> 
</form> 

* См более подробного объяснения: http://www.webaim.org/techniques/keyboard/accesskey.php

+0

Я вижу потенциал с этим, но я ищу больше для чего-то, что будет смотреть на текст и иметь дело с ключом доступа автоматически. Еще одна особенность выпадающих, о которых я не упоминал выше, заключается в том, что дважды нажать «G», чтобы перейти ко второму ответу, который начинается с «G». Другой наклейкой для меня является то, что похоже, что разные браузеры используют разные комбинации клавиш. – Mercurybullet

+0

Собираетесь ли вы принять первую букву текста переключателя? Что делать, если есть дубликаты? –

+0

Yup, собираюсь принять первую букву текста переключателя. Как я уже сказал, я хотел бы иметь что-то, что бы точно воспроизводило стиль выпадающего меню, но этого было недостаточно, чтобы создать его с нуля. Минимальным требованием было бы перебрать все параметры, начинающиеся с нажатия буквы. Если возможно, было бы здорово поддерживать быстрые всплески первых нескольких букв. – Mercurybullet

Смежные вопросы