我有一个输入字段,其中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);
}
}
});
答案 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在输入类型之间切换。