Фильтрация дижитаВыберите фокус
У меня есть несколько FilteringSlect на моей странице, кроме первой, остальные отключены. При выборе значения во-первых, включается 2-й выбор фильтрации и так далее. Я могу достичь этого. Когда пользователь выбирает значение в первом фильтрующем элементе, а затем нажимает на вкладку, чтобы перейти к следующему элементу выбора, он включается, но пользователь должен щелкнуть мышью по 2-му варианту выбора, чтобы ввести значение. У меня есть ссылка jsfiddle
`http://jsfiddle.net/qpue91L9/75/`
который демонстрирует проблему. Что я хочу, так это как только пользовательские вкладки из первого фильтра выбирают следующую, и без лишнего щелчка, пользователь должен иметь возможность выбрать новое значение, введя текст в поле выбора фитинга.
2 ответа
Я думаю, у меня все получилось [Рабочая скрипка][1]
[1]: http://jsfiddle.net/qpue91L9/125/
Также как предложено, предоставляя полный рабочий код
HTML-код
<input id="stateSelect">
<input id="stateSelect1">
<input id="stateSelect2">
Код JS
require([
"dojo/store/Memory", "dojo/on","dijit/form/FilteringSelect", "dojo/domReady!",'dijit/registry',"dijit/focus","dojo/dom"
], function(Memory, on,FilteringSelect,ready,registry,focusUtil,dom){
var stateStore = new Memory({
data: [
{name:"Alabama", id:"AL", timeStamp:"1211753600"},
{name:"Alaska", id:"AK", timeStamp:"1211753601"},
{name:"American Samoa", id:"AS", timeStamp:"1211753602"},
{name:"Arizona", id:"AZ", timeStamp:"1211753603"},
{name:"Arkansas", id:"AR", timeStamp:"1211753604"},
{name:"Armed Forces Europe", id:"AE", timeStamp:"1211753605"},
{name:"Armed Forces Pacific", id:"AP", timeStamp:"1211753606"},
{name:"Armed Forces the Americas", id:"AA", timeStamp:"1211753607"},
{name:"California", id:"CA", timeStamp:"1211753608"},
{name:"Colorado", id:"CO", timeStamp:"1211753609"},
{name:"Connecticut", id:"CT", timeStamp:"1211753610"},
{name:"Delaware", id:"DE", timeStamp:"1211753611"}
], idProperty: "timeStamp"
});
var filteringSelect = new FilteringSelect({
id: "stateSelect",
store: stateStore,
tabIndex: 1,
searchAttr: "name",
identifier: "timeStamp",
}, "stateSelect").startup();
var filteringSelect1 = new FilteringSelect({
id: "stateSelect1",
name: "state",
tabIndex: 2,
store: stateStore,
searchAttr: "name",
identifier: "timeStamp" ,
disabled:true,
}, "stateSelect1").startup();
var filteringSelect2 = new FilteringSelect({
id: "stateSelect2",
name: "state",
tabIndex: 3,
store: stateStore,
searchAttr: "name",
identifier: "timeStamp",
disabled:true,
}, "stateSelect2").startup();
on(dijit.byId("stateSelect"),"KeyPress",function(evt){
dijit.byId("stateSelect1").set("disabled",false);
});
on(dijit.byId("stateSelect"),"change",function(evt){
dijit.byId("stateSelect1").set("disabled",false);
dijit.byId("stateSelect1").focus();
});
on(dijit.byId("stateSelect1"),"KeyPress",function(evt){
dijit.byId("stateSelect2").set("disabled",false);
});
on(dijit.byId("stateSelect1"),"change",function(evt){
dijit.byId("stateSelect2").set("disabled",false);
dijit.byId("stateSelect2").focus();
});
});
Я проверил ваш пример и получил его работать несколько....
В основном я добавил это:
require([ "dijit/focus", "dojo/dom", "dojo/domReady!" ], function(focusUtil, dom){
var domObj = dom.byId("stateSelect1");
focusUtil.focus(domObj);
});
а также добавил tabIndex
свойство для каждого выбранного объекта. Проблема в том, что он работает только тогда, когда вы фактически выбираете элемент из списка, нажимая на него. Если используется вкладка, то она не работает. Возможно, вы могли бы использовать этот пример и перехватить событие табуляции, чтобы оно работало так, как вы этого хотите.