如果模糊时不存在,则将http://添加到输入

时间:2015-02-13 16:18:05

标签: angularjs

对于所有类型为url的输入字段(input [type = url]),on blur我想检查输入的值是否包含http://或https://以及是否不添加http://到用户输入值的开头。类似于下面的jquery:

$('.txtUrl').blur(function(e) {
    if ($(this).val().match(/^http/) || $(this).val().match(/^https/)) {
        $.noop()
    }
    else {
        // get value from field
        var cur_val = $(this).val(); 
        // do with cur_val
        $(this).val('http://' + cur_val);
    }        

});

我如何以棱角分明的方式做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用angular指令执行相同的功能。 定义ng-model来处理ng-model值。

<强>标记

<input type="url" my-directive ng-model="myUrl"/>

<强>指令

app.directive('myDirective', function() {
    return {
        restrict: 'AE',
        require: 'ngModel',
        link: function(scope, element, attrs, ctrl) {
            var model = $parse(attrs.ngModel)
            element.on('blur', function(e) {
                var value = ctrl.$modelValue; //ngModel Value
                if (value.match(/^http/) || value.match(/^https/)) {
                    angular.noop()
                } else {
                    // assign value to $modelValue
                    model.assign(scope, 'http://' + value);
                }
            });
        }
    }
});

这可以帮到你,谢谢。