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>