我创建了一个min和max指令,用于检查输入是否在范围之间。我还有一个ng模式验证。我正在使用ng消息显示我的验证。我遇到一个问题,即即使用户输入了正确的模式,“模式”的验证消息仍在显示。我只想显示范围超出范围的验证。这是html
<form name="fee">
<input type="text" name="fee_classi" ng-model="main.fee.I"
ng-pattern="/^[0-1](\.\d{0,2}){0,1}$/"
my-range="1,1.75"/>
<div role="alert" class="validation-errors"
ng-if="fee.fee_classi.$invalid && fee.fee_classi.$dirty"
ng-messages="fee.fee_classi.$error">
<p ng-message="range">Range should be between 1 to 1.75</p>
<p ng-message="pattern">Format must be 0.00</p>
</div>
</form>
这里是指令
app.directive('myRange', myRange);
function myRange() {
var directive = {
bindToController: true,
controller: myRangeCtrl,
controllerAs: 'vm',
// link: link,
restrict: 'A',
scope: {},
require: {
ngModelCtrl: 'ngModel'
}
};
return directive;
}
myRangeCtrl.$inject = ['$element', '$attrs'];
function myRangeCtrl($element, $attrs) {
var vm = this;
vm.min = 0; //default
vm.max = 0; //default
console.clear();
console.log(vm.ngModelCtrl);
var inRange = false;
var rangeVal = $attrs.myRange.split(',');
var userInput;
console.log(rangeVal);
vm.min = JSON.parse(rangeVal[0]);
vm.max = JSON.parse(rangeVal[1]);
$element.on('keypress', function(e) {
console.log(e);
console.log(vm.ngModelCtrl);
//if the pattern is valid then lets check if the user has the proper range
if (vm.ngModelCtrl.$valid) {
vm.ngModelCtrl.$validators.range = function(modelValue, viewValue) {
console.log('modelValue = ' + modelValue);
inRange = _.inRange(modelValue, vm.min, vm.max);
//check if modelValue can be converted to a number with isNaN function
if (isNaN(modelValue)) {
console.error('-VAlue is invalid');
return false;
}
if (angular.isDefined(modelValue) &&
modelValue[modelValue.length - 1] !== '.' &&
modelValue !== '') {
// console.log('modelValue = '+modelValue);
userInput = JSON.parse(modelValue);
if (inRange || userInput === vm.max) {
console.info('VAlue is valid');
//value entered is invalid
return true;
} else {
console.error('VAlue is invalid');
//value entered is valid
return false;
}
}
if (angular.isUndefined(modelValue)) {
return true;
}
//lets do a regex test first
};
}
});
这是柱塞
看看这个例子:https://docs.angularjs.org/api/ng/input/input[范围]你可能需要稍微调整一下以适应你的需要。
我有一个表单,如果复选框为false,则使用ng必需指令对文本输入进行验证。如果复选框为true,则该字段将被隐藏并且ng必需设置为false。 问题是,我在输入上还指定了一个用于验证的正则表达式,并且使用了ng模式角度指令。我遇到的问题是,如果用户填写了无效的电话号码,请选中该框以停用该输入(因此无需进一步验证),表单将不允许提交,因为它基于ng模式无效。 我试图通过添加一个ng change函
问题内容: 我有一种形式,如果复选框为false,则使用ng-required指令对文本输入强制执行验证。如果复选框为true,则该字段被隐藏,并且ng- required设置为false。 问题是我还使用ng-pattern angular指令在输入上指定了用于验证的正则表达式。我遇到的问题是,如果用户填写了无效的电话号码,请选中该框以停用该输入(因此无需进一步验证),则该表单将不允许提交,因为
问题内容: 我是AngularJS的新手,我正在构建一个小型的概念验证租车清单应用程序,该应用程序会提取一些JSON,并通过ng- repeat并使用几个过滤器来呈现这些数据的各个部分: 现在,我想在控制器中创建一个自定义过滤器,该过滤器可以迭代ng-repeat中的项目,并仅返回满足特定条件的项目-例如,我可以根据哪个“ provider”复选框创建值数组进行检查,然后评估每个ng-repeat
问题内容: 此自定义验证指令是官方角度网站上提供的示例。 http://docs.angularjs.org/guide/forms会 检查文本输入是否为数字格式。 为了对该代码进行单元测试,我编写了以下代码: 然后我得到这个错误: 我到处都放置了print语句以查看发生了什么,而且该指令似乎从未被调用过。测试像这样的简单指令的正确方法是什么? 问题答案: 另一个答案的测试应写为: 请注意,now
表单验证发生在数据验证之后。如果你需要定制化这个过程,有几个不同的地方可以修改,每个地方的目的不一样。表单处理过程中要运行三种类别的验证方法。它们通常在你调用表单的is_valid() 方法时执行。还有其它方法可以触发验证过程(访问errors 属性或直接调用full_clean() ),但是通用情况下不需要。 一般情况下,如果处理的数据有问题,每个类别的验证方法都会引发ValidationErr
我有一个示例 anjularjs 示例,它拉取 sku 详细信息数组,在选择下拉列表中显示价格和名称。现在我在下拉列表中选择了任何选项,它显示SKU名称和价格。 下面是我的选择标签,现在正在显示,sku名称和价格。 以下是我的skulist数据: 所以在这里,我的要求是下拉列表应该包含sku名称和价格,但一旦选择了值,然后只显示sku名称。