[英]Javascript search for dropdown inside knockout data-bind foreach
使用淘汰赛js
我已经将我的下拉菜单设置为:
<tbody data-bind="foreach: items">
<tr>
<td id="tdName"><select class="form-control" data-bind="options: $parent.ddl, optionsText: 'firstName', value: selectedValue, optionsCaption: '--Select--', attr: { name: 'Items[' + $index() + '].Name', id: 'Items[' + $index() + '].Name'}"> </select></td>
</tr>
因此,它将创建多个下拉列表行。 上面的html如下所示:
<select class="form-control" data-bind="options: $parent.ddl, optionsText: 'firstName', value: selectedValue, optionsCaption: '--Select--', attr: { name: 'Items[' + $index() + '].Name', id: 'Items[' + $index() + '].Name'}" name="Items[0].Name" id="Items[0].Name"><option value="">--Select--</option><option value="">Alex</option><option value="">Sam</option> </select>
我有一个保存按钮,我要在其中验证是否选择了此下拉菜单。
所以我试图在保存按钮单击上使用以下代码:
var selectList = $('#tdName > select');
for (var ddl of selectList ) {
if (ddl.value == '') {
ddl.className = "required text-danger form-control ddl-error"; }
}
在控制台中,当我调试时,可以看到selectList为:select#Items [0] .Name.form-control
因此,基本上我想在上面执行的操作是遍历所有ddl,如果未进行选择,则将错误类添加到其中,以便突出显示它。
问题是ddl.value始终为'',因此下拉菜单始终突出显示。
不确定这里是否正确循环
我在这里有我的jsfiddle:
https://jsfiddle.net/aman1981/7wqvr854/51/
要查看实际操作,请单击添加行,获取数据以填充下拉列表。
将不胜感激。
您不应该访问DOM来检查选定的值。 您已经将它们绑定到您的视图模型!
Save
方法中的有效性检查可以直接访问以下items
:
self.save = function() {
var rows = self.items();
if (!rows.length)
alert("You cannot save an empty table");
else if (!rows.every(r => r.selectedSeperator())
alert("Some rows do not have a selected seperator");
// etc.
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.