通过上一节,我们已经实现了一个软键盘的功能,本节主要介绍如何实现输入数值后 edit focus焦点的向后移动,提高用户体验度。
要想移动焦点首先需要获取当前页面的当前控件,然后遍历向后查询。
function itemIndex(item) {
//获取当前控件索引
if (item.parent === null)
return -1
var siblings = item.parent.children
for (var i = 0; i < siblings.length; i++)
if (siblings[i] === item)
return i
return -1 //will never happen
}
function nextItem(item) {
//查找下一个控件
if (item.parent === null)
return null
var index = itemIndex(item)
var siblings = item.parent.children
return (index < siblings.length - 1)? siblings[index + 1]: nextItem(item.parent)
}
调用以上两个函数,我们就获取到了下一个可能存在焦点的控件,接下来调用激活焦点函数
function activeNextItem(obj, localeSpinBox){
//激活下一个焦点控件
if(obj){
if(obj.nextItemInFocusChain().activeFocus===true)
obj.value=localeSpinBox.value;
var nextObj=nextItem(obj);
if(nextObj){
var activeObj=nextObj.nextItemInFocusChain();
activeObj.forceActiveFocus();
}
}
}
效果图: