2012 年 9 月 22 日更新:
@MarkyRoden - 感谢您为我指明了正确的方向。
改进 dojo.query 选择器后,我最终得到了 1 行代码。
var el = dojo.query('div[id*="inputKode"] .dijitInputField > input').at(-1)[0].focus();
原帖:
我发现被设置焦点的元素是not一个输入元素。
元素 ID 开头为widget_
E.g widget_view:_id1:_id2:_id3:repeat1:8:inputKode如果重复中有 8 行
然后我发现该元素的nodeType是DIV通过查看 element.innerHTML,我发现它有多个子元素。
我尝试使用 element.querySelector 或 element.querySelectorAll,但无法让它们为该元素工作,因此我最终循环遍历 element.childNodes。
不是很漂亮,但它现在可以工作了..
我确信通过向 dojo.query 选择器添加元素或使用 jquery 可以做得更好。以后还得研究一下..
好吧,这是我在 CC 的 onClientLoad 事件中放入的代码:
var el = dojo.query('div[id*="inputKode"]');
var node = el[el.length-1];
node.focus();
var activeElementId = document.activeElement.id;
var activeElement = dojo.byId( activeElementId );
var kids = activeElement.childNodes;
for(var i=0; i < kids.length; i++)
{
if(kids[i].className == 'dijitReset dijitInputField dijitInputContainer')
{
var elementDiv = kids[i];
var elementDivKids = elementDiv.childNodes;
for(var j=0; j < elementDivKids.length; j++)
{
var elementInput = elementDivKids[j];
elementInput.focus();
}
}
}
问候,
彼特