【发布时间】:2017-03-12 08:44:12
【问题描述】:
我正在尝试更新表格内的两个级联下拉菜单在SO 上有很多关于下拉菜单的答案,但我无法在cascading updates 的Table 内找到帮助dynamically added rows。
鉴于许多行,它们都有不同的 ID,filter #Id 不起作用。那么,我如何识别 哪些行 Dropdown 触发了更改 & 在同一行的下一个列中级联更新另一个 Dropdown/单元?
表格行单元格中有 2 个DropDownList(选择框)。为了简化这一点,第一个是Country -> 第二个是state。因此,用户需要先选择国家,然后再选择州。
我的伪算法:
- 找出哪一个被解雇了,以及哪一行(不确定是否需要,我应该在适当的位置接线)
- 然后触发 ajax 调用...以获取基于国家/地区的值
- 使用同一表格行中的值更新第二个下拉列表。
- 案例1改变国家然后改变状态。
- 案例2只需更改状态,但首先在同一行的第一个下拉菜单中获取国家/地区值。
我知道如何在常规页面中获取更改和值,但是如何获取这些更改并更新相邻的下拉列表。
$(document).on('change', 'select', function(){
var data = $(this).val();
alert(data);
});
编辑,斯蒂芬请求显示 HTML
<tr>
<td>
//DropDown 1 (Imagine Country)
<span class="projectcodeid">
<select class="form-control" id="Records_1__TCode_Project_ID" name="Records[1].TCode.Project.ID"><option value=""></option>
<option value="1">Plumbing</option>
<option value="2">Modeling</option>
</select></span>
</td>
<td>
//DropDown 2 (Imagine State)
<input type="hidden" name="Records.Index" value="1">
<input class="timecodeid" name="Records[1].TCode.ID" type="hidden" value="5">
<span class="timecode timecodeDdlId"> <select class="form-control timecodeDdlId" id="Records_1__TCode_ID" name="Records[1].TCode.ID"><option value=""></option>
</select></span>
</td>
<td>
<input name="Records[1].DataRecords[0].ID" type="hidden" value="">
<input class="hours" name="Records[1].DataRecords[0].Work" type="text" value="">
</td>
<td>
<input class="bs-checkbox" name="Records[1].DeleteRow" type="checkbox" value="true"><input name="Records[1].DeleteRow" type="hidden" value="false">
</td>
</tr>
【问题讨论】:
-
您需要显示典型行的 html(这只是使用类名和相对选择器的问题)
-
您必须为所有元素提供不同的 id 并在特定 id 元素上触发更改事件
-
@bharatsavani 我有不同的 ID,我可以在代码中验证。但是我如何将
change附加到它,因为它们在运行时都有不同的 id 基于 db 行? -
您必须在 jquery 中传递 id 而不是 select,如下所示 $(document).on('change', '#id', function(){ var data = $(this).val( ); 警报(数据); });
-
@transformer,请显示典型行的html(并忽略关于
id属性的废话)
标签: javascript jquery ajax asp.net-mvc drop-down-menu