dojoでキーボードが入力できない

ダイアログ上の何らかのノードでキーボードイベントを受け付ないバグが発生した場合にダイアログの親クラスdijit.Dialogでキーボードイベントがストップしている可能性があります。

解決方法としては子クラスでオーバーライドするなどがあげられます。


_onKey: function(/*Event*/ evt){ if(evt.keyCode){ var node = evt.target; // see if we are shift-tabbing from titleBar if(node == this.titleBar && evt.shiftKey && evt.keyCode == dojo.keys.TAB){ if(this._lastFocusItem){ this._lastFocusItem.focus(); // send focus to last item in dialog if known } dojo.stopEvent(evt); }else{ // see if the key is for the dialog while(node){ if(node == this.domNode){ if(evt.keyCode == dojo.keys.ESCAPE){ this.hide(); }else{ return; // just let it go } } node = node.parentNode; } // this key is for the disabled document window if(evt.keyCode != dojo.keys.TAB){ // allow tabbing into the dialog for a11y dojo.stopEvent(evt); // opera won't tab to a div }else if (!dojo.isOpera){ try{ this.titleBar.focus(); }catch(e){/*squelch*/} } } } },