ie9中的Angular js占位符问题

时间:2015-10-26 11:45:46

标签: javascript angularjs

我在部分页面中添加了占位符,如下所示

<input name="name" type="text" placeholder="Enter name" ng-class="{'error':form.name.$invalid}" ng-model="Name" required />

并实现了文本框的客户端验证。

if (this.name.$error.regEx) {
        $scope.errorList.push({              
            Message: "Invalid name"
        });
    }

我已经为正则表达式创建了指令。此代码在chrome和IE 10中运行良好。但在IE 9中,如果我在文本框中复制并粘贴正确的名称,则会抛出客户端验证错误(因为它也会发生持有者文本)。任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

IE9不支持placeholder属性,因为它是HTML5属性。 thomseddon

给出了非常好的解决方案
angular.module('test', [])
.directive('placeholder', function($timeout){
    var i = document.createElement('input');
    if ('placeholder' in i) {
        return {}
    }
    return {
        link: function(scope, elm, attrs){
            if (attrs.type === 'password') {
                return;
            }
            $timeout(function(){
                elm.val(attrs.placeholder);
                elm.bind('focus', function(){
                    if (elm.val() == attrs.placeholder) {
                        elm.val('');
                    }
                }).bind('blur', function(){
                    if (elm.val() == '') {
                        elm.val(attrs.placeholder);
                    }
                });
            });
        }
    }
});

来源:https://gist.github.com/thomseddon/4703810