Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在angularJS中将输入字段设置为ng invalid_Javascript_Angularjs_Validation_Input - Fatal编程技术网

Javascript 如何在angularJS中将输入字段设置为ng invalid

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").

我想检查信用卡号的输入字段

该字段应保持无效,直到其最小长度为13。由于用户应该能够在字段中填充空格,我在javascript函数中删除了这些空格。 在这个函数中,我想检查信用卡号(不带空格),并将其设置为ng invalid,只要最小长度小于13,最大长度大于16

应该是这样的:

$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);