Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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 ng已禁用,不允许在ng repeat内的输入文本框中输入多个文本_Javascript_Angularjs_Ng Repeat - Fatal编程技术网

Javascript ng已禁用,不允许在ng repeat内的输入文本框中输入多个文本

Javascript ng已禁用,不允许在ng repeat内的输入文本框中输入多个文本,javascript,angularjs,ng-repeat,Javascript,Angularjs,Ng Repeat,我正在共享一个提琴,其中我尝试禁用所有包含值的输入文本框,但当我尝试在没有值的文本框中输入值时,它仅通过输入单个字符来禁用。是否有人遇到过类似问题,请分享您的想法 问题在于,您希望禁用输出值的初始状态,但随后您对其进行了修改,从而更改了禁用/启用的内容 相反,您应该创建值的原始副本并使用该副本来禁用。然后更新跟踪当前值的值$scope.valuesRoutPuts 尝试添加以下内容: var origValuesForOutputs = angular.copy($scope.valuesFo

我正在共享一个提琴,其中我尝试禁用所有包含值的输入文本框,但当我尝试在没有值的文本框中输入值时,它仅通过输入单个字符来禁用。是否有人遇到过类似问题,请分享您的想法


问题在于,您希望禁用输出值的初始状态,但随后您对其进行了修改,从而更改了禁用/启用的内容

相反,您应该创建值的原始副本并使用该副本来禁用。然后更新跟踪当前值的值
$scope.valuesRoutPuts

尝试添加以下内容:

var origValuesForOutputs = angular.copy($scope.valuesForOutputs);

$scope.isDisabled = function(output, month) {
   var val = origValuesForOutputs[output][month];
   return val && val.length;
 };
并将ng disabled更改为:

ng-disabled="isDisabled(item.name, i)"

下面是一个例子:

您可以在ng init中使用此技巧:

<td ng-repeat="i in months" 
    ng-init="wasEmpty=!valuesForOutputs[item.name][i]">{{valuesForOutputs[item.name][i]}}
    <input type="text" ng-model="valuesForOutputs[item.name][i]"
        ng-disabled="valuesForOutputs[item.name][i] && !wasEmpty" 
        required name="value" placeholder="Enter value">
</td>
{{valuesfroutputs[item.name][i]}

那么,问题出在哪里?如果您告诉它禁用带有值的字段,那么如果您在空字段中输入值,它应该被禁用。请注意,“truthy”值是一个长度大于0的字符串,因此单个字符构成。我想输入多个字符,所以只需使用,ng disabled=“valuesfroutputs[item.name][I]。length>1”确定,然后输入文本,你希望它被禁用吗?不@GPicazo。我希望文本框保持打开状态谢谢。我已经为我的输入文本框添加了一个验证,只接受数字。它没有启动。请检查这里
<td ng-repeat="i in months" 
    ng-init="wasEmpty=!valuesForOutputs[item.name][i]">{{valuesForOutputs[item.name][i]}}
    <input type="text" ng-model="valuesForOutputs[item.name][i]"
        ng-disabled="valuesForOutputs[item.name][i] && !wasEmpty" 
        required name="value" placeholder="Enter value">
</td>