5

Stavo lavorando con combobox (input + dropdown) costruito attorno a Bootstrap su un progetto di accessibilità.dropdown input inputdown keyboard arrow

Ho eseguito una modifica apportata alla parte dropdown.js del bootstrap tra la v3.3.0 e la v3.3.1 che interrompe il mio codice.

Quando la messa a fuoco è input, la freccia su o giù della freccia utilizzata per attivare il menu a discesa è ciò che voglio poiché l'obiettivo è rendere possibile la navigazione solo per tastiera ma non funziona più.

Quando metto a confronto:

https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.js

e

https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.js

La variazione è da (3.3.0, linea 798)

Dropdown.prototype.keydown = function (e) { 
if (!/(38|40|27|32)/.test(e.which)) return 

A (3.3. 1, riga 799)

Dropdown.prototype.keydown = function (e) { 
if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return 

Quindi, so che probabilmente posso aggirarlo con jQuery ma c'è una vera ragione per questo cambiamento? In caso contrario, questo può essere considerato come un bug report.

Di seguito è una demo Bootply del mio widget. Funziona con Bootstrap 3.3.0 e qualsiasi cosa sotto, ma se cambi il popup della versione di bootstrap con qualcosa sopra 3.3.0, non risponde al tasto frecce.

http://www.bootply.com/2gHt0MWRWd

+0

Buona domanda ..... –

+1

vorrei sapere che me stessa... – bbh

risposta

1

Non ci sono attualmente in corso un dibattito su questo, as logged in issue 15757.

La regolazione è stata effettuata in pull # 15088 (Dropdown: Ignore keydown events coming from inputs and textareas). Non dicono "perché" è stato necessario seguire questa strada nel rilascio, ma dopo alcuni scavi sono riuscito a trovare il problema/dibattito che coinvolgeva alcuni sviluppatori e il team Bootstrap.

In quel dibattito, è stato detto che è stato aggiunto:

"per consentire gli spazi per essere digitati in un ingresso all'interno di un menu a discesa"

Sono ancora un brainstorming soluzione, quindi potrei suggerire di aggiungere i tuoi due centesimi nel dibattito. Spero che questo ti aiuti.

0

Ecco una correzione per esso:

$('[data-toggle="dropdown"]').keydown(function(e){ 
    if(e.which == 40){ 
    $(this).dropdown('toggle'); 
    } 
}); 

Questo solo controlla la freccia verso il basso (codice tasto 40)

See it in action here