输入字段的样式字体(Angularjs)
Style font for input field (Angularjs)
这里是plunker链接->http://plnkr.co/edit/iFnjcq?p=preview
正如您在链接中看到的,它执行输入字段的验证。只允许输入数字,它会自动添加逗号。
我的问题是->如果我在该字段中给定一个负数,我如何自动更改该字段中输入的值的颜色。
即正数应按原样显示。当用户输入负数时,数字将以红色文本输入。
有什么办法可以让我做到这一点吗??
HTML-
<div ng-controller="MainCtrl">
<input type="text" ng-model="amount" format="number" />
</div>
JS指令
var app = angular.module('App',[]);
app.controller('MainCtrl', function ($scope) {
});
app.directive('format', ['$filter', function ($filter) {
return {
require: 'ngModel',
link: function (scope, elem, attrs, ctrl) {
if (!ctrl) return;
ctrl.$formatters.unshift(function (a) {
return $filter(attrs.format)(ctrl.$modelValue);
});
ctrl.$parsers.unshift(function (viewValue) {
var plainNumber = viewValue.replace(/[^'d|'-+]/g, '');
elem.val($filter('number')(plainNumber/100,2));
return plainNumber;
});
}
};
}]);
关于下面讨论的样式覆盖问题,这里是问题所在。
实际的HTML代码
<div class="Ip"><input type="text" ng-model="amount" format="number" /></div>
CSS是通过类Ip的scs应用的。这是
$font:#fff; //this font gets overwritten. even if i exclude this font of bootstrap is there which will overwite the class mentioned in directive.
.inputCl{
color:$font;
}
.Ip{
input{
@extend .inputCl;
}
}
当你应用格式时,只需检查它是否为负数,并根据需要添加一个css类
ctrl.$parsers.unshift(function (viewValue) {
var plainNumber = viewValue.replace(/[^'d|'-+]/g, '');
elem.val($filter('number')(plainNumber/100,2));
if (plainNumber < 0) {
elem.addClass('negative');
} else {
elem.removeClass('negative');
}
return plainNumber;
});
http://plnkr.co/edit/GdneR70Rw6RtTbwMrfx4?p=preview
您的SASS
$font:#fff;
$fontNegative:#ff0000;
.inputCl{
color:$font;
}
.Ip{
input{
@extend .inputCl;
}
input.negative {
color: $fontNegative;
}
}
您可以在现有的format
指令中添加几个条件,但这并不酷:指令应该集中并做自己的事情,比如格式化。
相反,创建一个非常简单的指令来添加新的验证约束。我们称之为positive
指令:
.directive('positive', [function() {
return {
require: 'ngModel',
link: function(scope, elem, attrs, ctrl) {
if (!ctrl) return;
ctrl.$validators.positive = function(value) {
return value && value >= 0;
};
}
};
}]);
则使用
<input type="text" ng-model="amount" format="number" positive />
之后,您可以使用.ng-invalid-positive
类设置输入的有效/无效状态,该类将由Angular根据当前输入为您添加:
.ng-invalid-positive {
color: red;
}
演示:http://plnkr.co/edit/2RAlx0DoFH1HEmdT0XCv?p=preview
相关文章:
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- AngularJS:我可以跳过函数参数回调吗
- AngularJS UI路由器不能像ng路由器那样工作
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 如何包含特定于每个视图angularjs的javascript文件
- AngularJS:ng之后,重复$scope值未按预期更新
- AngularJS-在JSON选择器中使用变量名
- $window.ga在AngularJS事件中未定义
- AngularJS-使用'true'属性
- 用Javascript更改我网站上的字体大小
- 打开一个模态并将其链接到AngularJS中的指令
- Angularjs代码未在匿名函数中运行
- javascript AngularJS在包装标签时自动更改字体大小
- Angularjs 可编辑的字体头不更新范围
- 使用 AngularJS 切换文本字体
- AngularJS:字体真棒喜欢按钮未显示在ng-show下
- 在 AngularJS 中更改$scope变量中文本的字体颜色
- 输入字段的样式字体(Angularjs)
- 如何使用angularJS动态更改两个字体awesome (CSS)类