屏蔽输入字段文本以使用角度JS显示项目符号

时间:2014-12-08 13:15:48

标签: angularjs

我有一个输入字段,其中type = tel(设备需要)。 需要屏蔽文本字段,以便显示项目符号而不是文本(如密码)。 任何想法如何使用角度JS。 使用-webkit-text-security:disc实现所有浏览器的相同; 但它不适用于IE。 因此想知道我们是否可以通过Angular JS实现它。

直到现在已经尝试创建一个更改输入类型的自定义指令,但它似乎不起作用。

    myDirectives.directive('changeType', function() {
       return {
            priority: 500,
            compile: function(elem, attrs) {
              attrs.$set('type', 'password', false);
            }
       }
    });

1 个答案:

答案 0 :(得分:0)

首先,你不需要角度来设置类型,这里是一个简单的旧javascript实现:

http://plnkr.co/edit/mCa1gvg52q0pFM6FRj7T?p=preview

window.onload = function(){
    init(); 
}
function init(){
    var x = document.getElementsByTagName("input")[0];
    var style = window.getComputedStyle(x);
    console.log(style);
    if(style.webkitTextSecurity){
        //do nothing
    }else{
        x.setAttribute("type","password");
    }
}   

但实际上,存在限制,并且您不应该动态更改输入类型。所以angular可以在代码中支持这一点,但浏览器限制会/应该阻止它被改变;你甚至可能会像上面那样改变它,但是因为它可能会按照你期望的方式进行评估。

见这里:AngularJS: can't change input type

最好在页面加载时设置输入类型,或使用ng-switch在输入类型之间切换。