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

yamagenii 39views 更新:2015年5月19日

ダイアログ上の何らかのノードでキーボードイベントを受け付ないバグが発生した場合にダイアログの親クラス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*/} } } } },

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません