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); 
      } 

      } 
     }); 

    } 
    } 
}) 

这不是一个妥善的解决办法,只是一种变通方法