我在ID DA *中选择了如下标签,想要检查下拉列表是否在变化。
window.onload = function() {
function refreshData() {
console.log('refresh data...');
}
$('select[id*="DA"]').each(function() {
$(this).change(function() {
alert('change');
refreshData();
});
});
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="dropdown " data-val="true" data-val-ddladdnew="Please select a valid DA." data-val-number="The field DA must be a number." data-val-required="The DA field is required." data-value="123456" id="DA_dff57gdc-3421-4b66-9f05-061e7a8l3207__ID"
name="DA[dff57gdc-3421-4b66-9f05-061e7a8l3207].ID" dropdownaddnew="true" dropdownargument="" dropdownsource="***.Data.Entities.DA" dropdownversion="636245716304981172">
<option value=''></option>
</select>
<select class="dropdown " data-val="true" data-val-ddladdnew="Please select a valid DA." data-val-number="The field DA must be a number." data-val-required="The DA field is required." data-value="789012" id="DA_a50bfa29-2495-47e4-a52f-fa6a8d1305b0__ID"
name="DA[a50bfa29-2495-47e4-a52f-fa6a8d1305b0].ID" dropdownaddnew="true" dropdownargument="" dropdownsource="***.Data.Entities.DA" dropdownversion="636245716304981172">
<option value=''></option>
</select>
但是在更改下拉列表时,refreshData()函数没有被触发,任何人都可以让我知道出了什么问题或有其他方法吗?
有一个函数initDropdownControls() - 它接受版本和实体名称并填充选项。以前的代码来自右键单击并查看源页面,现在已经检查并获取了代码。
<select class="dropdown select2-offscreen init" data-val="true" data-val-ddladdnew="Please select a valid DA." data-val-number="The field DA must be a number." data-val-required="The DA field is required." data-value="728583" id="DA_cff57bdc-3f21-4b66-9f45-061e7a8a3207__ID" name="DA[cff57bdc-3f21-4b66-9f45-061e7a8a3207].ID" dropdownaddnew="true" dropdownaddnewhandler="***.Areas.Admin.Controllers.DAController+DropDownAddNewHandler" dropdownargument="" dropdownsource="****.Data.Entities.DA" dropdownversion="636245716304981172" tabindex="-1"><option value=""></option><option value="735770">Gibson Test, Ben</option><option value="728583" selected="selected">MuTest, Mathew</option><option value="728429">Murdock, Test</option><option value="728412">Testlast, Test </option><option value="728410">Woll, Test</option><option value="-1">( Add New )</option></select>
哪个有选项,希望window.onload是在所有document.ready之后触发的最后一个。所以,使用它,是@Rory您的代码片段正在工作,但希望我的问题是其他的东西,我仍然面临着问题。而且我无法使用.dropdown,因为该页面有很多选择,并且我只想更改其中包含DA *的特定选择。
答案 0 :(得分:1)
根据@RoryMcCrossan注释,委托事件处理程序使其工作,因为重新创建了select元素!
$('body').on('change', '.dropdown', function () {
alert('change');
refreshData();
});
答案 1 :(得分:0)
正如其他评论所提到的那样,您不需要使用.each,因为警报已经显示每个选择字段的更改,因为您已要求它选择ID为“DA”的所有元素。您在检测更改的功能选项中也没有任何新值。
<select class="dropdown " data-val="true" data-val-ddladdnew="Please select a valid DA." data-val-number="The field DA must be a number." data-val-required="The DA field is required." data-value="123456" id="DA_dff57gdc-3421-4b66-9f05-061e7a8l3207__ID" name="DA[dff57gdc-3421-4b66-9f05-061e7a8l3207].ID" dropdownaddnew="true" dropdownargument="" dropdownsource="***.Data.Entities.DA" dropdownversion="636245716304981172">
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
</select>
<select class="dropdown " data-val="true" data-val-ddladdnew="Please select a valid DA." data-val-number="The field DA must be a number." data-val-required="The DA field is required." data-value="789012" id="DA_a50bfa29-2495-47e4-a52f-fa6a8d1305b0__ID" name="DA[a50bfa29-2495-47e4-a52f-fa6a8d1305b0].ID" dropdownaddnew="true" dropdownargument="" dropdownsource="***.Data.Entities.DA" dropdownversion="636245716304981172">
<option value='a'>a</option>
<option value='b'>b</option>
<option value='c'>c</option>
</select>
<script>
$('select[id*="DA"').change(function(){
alert('changed!')
});
</script>