Javascript ng重复循环输入时禁用ng
我正在显示基于数组的输入,如下所示Javascript ng重复循环输入时禁用ng,javascript,angularjs,angularjs-ng-repeat,angularjs-ng-disabled,Javascript,Angularjs,Angularjs Ng Repeat,Angularjs Ng Disabled,我正在显示基于数组的输入,如下所示 <div data-ng-repeat="n in langInput.values"> <input type="text" id="auction_name_{{n.selected}}" class="form-control" name="auction_name_{{$index}}" data-ng-model="inputs.auc
<div data-ng-repeat="n in langInput.values">
<input type="text"
id="auction_name_{{n.selected}}"
class="form-control"
name="auction_name_{{$index}}"
data-ng-model="inputs.auction_name[$index + 1]"
data-ng-minlength="5"
data-ng-maxlength="60"
required />
<span data-ng-show="sellItem['auction_name_'+$index].$error.required">Wymagane!</span>
我知道我可以使用这个ng disabled
指令,但是我不知道如何检查循环中显示的输入,因为它的名称根据循环的$index
而改变
我创造了
我的情况是,我知道我可以通过
ng disabled=“sellItem.$error”禁用某些元素无效时的按钮
但在实际项目中的表单中,我的表单要大得多,而且我有很多方法来完成表单,所以最终当用户完成表单的完整填写时,用户仍然会得到一些甚至没有显示为无效的输入
所以我不能使用ng disabled=“sellItem.$error”
,因为在用户完成表单后,他在后台仍然得到无效的输入
我也不能将表单拆分为许多小表单,因为它将在提交时调用一个端点
我在真实项目中所做的是注入3个不同的按钮,并在正确的步骤中显示它们。每个按钮都需要禁用ng,以避免用户在未完成步骤输入的情况下进入下一步
因此,我需要在一个步骤的ng disabled中指定所有输入(大约5个输入)
所以它看起来像这样:
ng-disabled="sellItem.first_input.$error &&
sellItem.second_input.$error && ..."
我会这样做,但后来我遇到了一个问题,我不能在ng disabled
中“循环”,我想在它里面“循环”,因为输入的名称是由JS生成的
name="auction_name_{{n.id}}"
它们不是不变的,而是不断变化的,用户可以添加更多的输入并删除它们
在页面开始处,我有两个输入,在JS运行之后是name=“auction\u name\u 1”
和name=“auction\u name\u 2”
(由于绑定插值),然后用户可以和第三个name=“auction\u name\u 3”
所以我不能在ng disabled
中硬编码它们
我不知道如何检查循环中显示的输入,因为它的名称随循环的$index而变化
通常情况下,将输入存储为数组中对象的属性,以便在对象在数组中的位置发生变化时,它与对象保持一致
还可以使用对象的id
属性:
<form name="sellItem" ng-submit="submit()">
<div data-ng-repeat="n in langInput.values">
<input type="text"
id="auction_name_{{n.selected}}"
class="form-control"
̶n̶a̶m̶e̶=̶"̶a̶u̶c̶t̶i̶o̶n̶_̶n̶a̶m̶e̶_̶{̶{̶$̶i̶n̶d̶e̶x̶}̶}̶"̶
name="auction_name_{{n.id}}"
̶d̶a̶t̶a̶-̶n̶g̶-̶m̶o̶d̶e̶l̶=̶"̶i̶n̶p̶u̶t̶s̶.̶a̶u̶c̶t̶i̶o̶n̶_̶n̶a̶m̶e̶[̶$̶i̶n̶d̶e̶x̶ ̶+̶ ̶1̶]̶"̶
data-ng-model="n.input"
data-ng-minlength="5"
data-ng-maxlength="60"
required />
<span data-ng-show="sellItem['auction_name_'+n.id].$error.required">Wymagane!</span>
<span data-ng-show="sellItem['auction_name_'+n.id].$error.minlength">Za krótkie!</span>
<span data-ng-show="sellItem['auction_name_'+n.id].$error.maxlength">Za długie!</span>
</div>
<button type="submit" ng-disabled="sellItem.$error">
{{Submit}}
</button>
</form>
威马根!
扎克洛特基!
扎杜吉!
{{提交}
确保为id
属性生成唯一值
更新 添加了提交按钮 有关详细信息,请参阅
ng disabled
指令放在哪里?我在你的代码中没有看到一个按钮。请显示整个代码示例,包括表单和按钮。我尝试了,但单击了fork,它没有在plnker更新我的代码。我想要表单下方的按钮现在它工作了,但里面是什么?请同时显示禁用按钮,直到每个输入都有效。submit
按钮和ng submit
指令。是的,我可以在本演示中实现这一点,但在我的项目中,我不能,我需要在ng disabled
中指定确切的输入,因为我有一个大表单,其中包含许多不同的路径,它们有自己的输入。因此,并非所有输入都必须有效才能禁用此按钮。我有3个不同的按钮,我可以通过引用单个输入来禁用它们,例如ng disabled=“sellItem.nameofement”
,但我不能在ng disabled中循环输入
<form name="sellItem" ng-submit="submit()">
<div data-ng-repeat="n in langInput.values">
<input type="text"
id="auction_name_{{n.selected}}"
class="form-control"
̶n̶a̶m̶e̶=̶"̶a̶u̶c̶t̶i̶o̶n̶_̶n̶a̶m̶e̶_̶{̶{̶$̶i̶n̶d̶e̶x̶}̶}̶"̶
name="auction_name_{{n.id}}"
̶d̶a̶t̶a̶-̶n̶g̶-̶m̶o̶d̶e̶l̶=̶"̶i̶n̶p̶u̶t̶s̶.̶a̶u̶c̶t̶i̶o̶n̶_̶n̶a̶m̶e̶[̶$̶i̶n̶d̶e̶x̶ ̶+̶ ̶1̶]̶"̶
data-ng-model="n.input"
data-ng-minlength="5"
data-ng-maxlength="60"
required />
<span data-ng-show="sellItem['auction_name_'+n.id].$error.required">Wymagane!</span>
<span data-ng-show="sellItem['auction_name_'+n.id].$error.minlength">Za krótkie!</span>
<span data-ng-show="sellItem['auction_name_'+n.id].$error.maxlength">Za długie!</span>
</div>
<button type="submit" ng-disabled="sellItem.$error">
{{Submit}}
</button>
</form>