0

我們可以在使用tab鍵關注焦點時打開下拉菜單。我想在使用標籤導航時打開下拉菜單。如何在角js中打開下拉菜單?

例子,如果我在輸入字段(聚焦到輸入字段),那麼如果我按Tab鍵焦點轉到按鈕,然後降了下來,在這裏我要在這裏打開下拉 是我的代碼 http://codepen.io/anon/pen/RGKKrd?editors=1010

angular.module('app',[ ]).directive('abc',function(){ 
    return { 
     restrict: 'EA', 
     link: function (scope, element ,attr) { 
      element.on('keydown', function (evt) { 
       if (evt.which ===9) { 
        // evt.preventDefault(); 
       } 
      }); 
     } 
    } 
}) 
+0

我想可能是有幫助的。[鏈接](http://stackoverflow.com/questions/430237/is-it-possible-使用的JS-到開放的-HTML的選擇到顯示,其選項列表) – Tal

回答

1

不能編程方式打開select

herehere

如果你正在尋找一個解決方法here是我所做的。 導航到select boxtab key並選擇您的optionselect只要在focus中就會保持打開狀態。 ,逢focusout

這裏是指令

angular.module('app',[ ]).directive('abc',function(){ 
    return { 
     restrict: 'EA', 
     link: function (scope, element ,attr) { 

      element.on('keyup', function (evt) { 
       if (evt.which ===9) { 
        var length = element.find("option").length; 
        element.attr("size",length); 
        //element.attr("size",0); 
       } 
      }); 

      element.on('keydown', function (evt) { 
       if (evt.which ===9) { 
        var length = element.find("option").length; 
        element.attr("size",0); 
        //element.attr("size",0); 
       } 
      }); 

     } 
    } 
}) 

不是最好的解決辦法,但接近你在找什麼。

0

你不能這樣做,但有一些工作可以與你一起使用的代碼。 你可以像這樣改變你的Js代碼。

angular.module('app',[ ]).directive('abc',function(){ 
    return { 
    restrict: 'EA', 
    link: function (scope, element ,attr) { 
     element.on('keydown', function (evt) { 
      if (evt.which ===9) { 
      //debugger; 
      if(document.activeElement.localName==="select"){ 
         angular.element(document.activeElement).attr("size",1); 
      } 
      if(document.activeElement.nextElementSibling!==null && document.activeElement.nextElementSibling.localName==="select"){ 
      angular.element(document.activeElement.nextElementSibling).attr("size",document.activeElement.nextElementSibling.childElementCount); 
      } 

      } 
     }); 

    } 
    } 
}) 

這不是一個妥善的解決辦法,只是一種變通方法