AngularJS on IE10+ ,textarea with placeholder cause “Invalid argument.”

后端 未结 3 993
执笔经年
执笔经年 2021-01-07 19:22

I\'m getting \"Invalid argument\" when using angularJS ,TextArea with placeholder, on IE10+.

This will ONLY happen when the textarea node is closed with

相关标签:
3条回答
  • 2021-01-07 20:00

    I experienced this error today and randomly stumbled upon this question. Here's what solved it for me

    Before:

    <textarea placeholder="{[{ 'NAME' | translate }]}" ng-model="name" name="name"></textarea>
    

    After:

    <textarea placeholder="{[{ 'NAME' | translate }]}" ng-model="name" name="name"> </textarea>
    

    Note the little space inside the textarea, that's what actually stopped IE from complaining...

    0 讨论(0)
  • 2021-01-07 20:00

    I know this question is now pretty old, but thought I'd throw in my thoughts too. We ran into this issue several months ago and had to drum up a fix, so we ended up using this directive to solve the problem:

    mod.directive('placeHolder', [
        function(){
            return {
                restrict: 'A',
                link: function(scope, elem, attrs){
                    scope.$watch(attrs.placeHolder, function(newVal,oldVal){
                        elem.attr('placeholder', newVal);
                    });
                }
            };
        }
    ]);
    

    And then you can use it in your views:

    <textarea place-holder="placeholderModel" ng-model="textareaModel"></textarea>
    

    Once your model data arrives (possibly asynchronously), the directive will add a traditional placeholder attribute to the <textarea> and it'll work as you would want.

    It's not the greatest solution, but it works. Hope that helps.

    0 讨论(0)
  • 2021-01-07 20:20

    This seems to be an issue with the way you're binding to the element's placeholder - strange, I know.

    I was able to get everything working correctly in IE using the ng-attr-placeholder directive instead of binding directly to the attribute in the DOM.

    For example, instead of:

    <textarea placeholder="{{placeholderModel}}" ng-model="textareaModel"></textarea>
    

    Try this:

    <textarea ng-attr-placeholder="placeholderModel" ng-model="textareaModel"></textarea>
    

    Related: AngularJS v1.2.5 script error with textarea and placeholder attribute using IE11

    0 讨论(0)
提交回复
热议问题