Javascript 如何在angularJS中将输入字段设置为ng invalid
我想检查信用卡号的输入字段 该字段应保持无效,直到其最小长度为13。由于用户应该能够在字段中填充空格,我在javascript函数中删除了这些空格。 在这个函数中,我想检查信用卡号(不带空格),并将其设置为ng invalid,只要最小长度小于13,最大长度大于16 应该是这样的:Javascript 如何在angularJS中将输入字段设置为ng invalid,javascript,angularjs,validation,input,Javascript,Angularjs,Validation,Input,我想检查信用卡号的输入字段 该字段应保持无效,直到其最小长度为13。由于用户应该能够在字段中填充空格,我在javascript函数中删除了这些空格。 在这个函数中,我想检查信用卡号(不带空格),并将其设置为ng invalid,只要最小长度小于13,最大长度大于16 应该是这样的: $scope.ccHandler = function() { if ($scope.ccNumber == '') { document.getElementById("ccProvider").
$scope.ccHandler = function() {
if ($scope.ccNumber == '') {
document.getElementById("ccProvider").disabled = false;
}
$scope.ccNumber = inputCC.value.split(' ').join(''); //entfernt die Leerzeichen aus der Kreditkartennummer vor der übergabe an den Server
console.log("das ist meine CC: " + $scope.ccNumber);
isValidCreditCardNumber($scope.ccNumber);
getCreditCardProvider($scope.ccNumber);
document.getElementById("ccProvider").disabled = true;
if ($scope.ccNumber.length < creditCardNumberMinLength || $scope.ccNumber.length > creditCardNumberMaxLength) {
//$scope.ccNumber.ng-invalid = true;
console.log("ccNumber ist noch ungültig!");
//document.getElementById("inputCC").$setValidity("ccNumber", false);
}
}
$scope.ccHandler=function(){
如果($scope.ccNumber==''){
document.getElementById(“ccProvider”).disabled=false;
}
$scope.ccNumber=inputc.value.split(“”).join(“”);//在一个den服务器上输入一个文件
log(“das ist meine CC:+$scope.ccNumber”);
isValidCreditCardNumber($scope.ccNumber);
getCreditCardProvider($scope.ccNumber);
document.getElementById(“ccProvider”).disabled=true;
如果($scope.ccNumber.lengthcreditCardNumberMaxLength){
//$scope.ccNumber.ng-invalid=true;
log(“ccNumber ist noch ungültig!”);
//document.getElementById(“inputCC”).$setValidity(“ccNumber”,false);
}
}
这将是XHTML的一部分:
<div class="form-group" ng-switch-when="CreditCard">
<label class="col-xs-3 col-sm-3 control-label">Kreditkartennummer</label>
<div class="col-xs-5 col-sm-5 col-md-5">
<input name="ccNumber" class="form-control" type="text" id="inputCC" ng-change="ccHandler();updateCount()" ng-model="ccNumber" ng-required="true"/>
</div>
</div>
克雷迪卡坦纳默
如何实现这一点?您可以在输入字段中使用标准的
ng maxlength
和ng minlength
属性
中有一个工作示例
您可以使用
$setValidity
实现这一点。您需要在
上设置名称
属性以使其正常工作
<form name="myForm">
<input name="ccNumber" ng-model="ccNumber">
<span ng-show="myForm.ccNumber.$error.minLength">
A cc number should be minimum 10 chars
</span>
</form>
这是一个有效的plnkr:以下代码对我有效:
$scope.myForm.ccNumber.$setValidity("ccNumber", false);
谢谢,但我不能使用,因为在该输入字段中删除了空格(如上所述)。我需要在JS函数中跟踪长度。我对我的问题进行了编辑,以使其更清楚。为什么不能删除空格,并让标准指令最终设置有效性?空格已删除,但字段中的实际输入由ng minlength和ng maxlength观察,没有空格的数据不会更改。所以问题是,在检查最小和最大长度时,这些空格会被考虑在内。请使用
ng disabled
而不是document.getElementById(“ccProvider”)。disabled
您可能想检查angular ui的掩码指令:谢谢。以这种方式设置有效性时,它会被忽略。我不知道为什么。输入字段在一个div中,这个div在表单中。这应该没问题,不是吗?这并不能回答这个问题。若要评论或要求作者澄清,请在他们的帖子下方留下评论-你可以随时对自己的帖子发表评论,一旦你有足够的评论,你就可以发表评论。这是对我的帖子的回答,因为它达到了我搜索的目的。你是对的,我没有正确使用$setValidity。我修改了我的答案。
$scope.myForm.ccNumber.$setValidity("minLength",$scope.ccNumber.length>=10);
$scope.myForm.ccNumber.$setValidity("ccNumber", false);