У меня есть опция выбора, как,
<td>
<select id="ddlregion" name="RegionId">
<option value="0">Select Region</option>
@foreach (Region re in region)
{
<option value="@re.RegionID">@re.RegionName</option>
}
</select>
</td>
<td>
<select disabled id="ddlcity" name="CityId">
<option value="0">Select City</option>
@foreach (City re in city)
{
<option data-region="@re.RegionID" value="@re.CityID">@re.CityName</option>
}
</select>
</td>
Onchange Я вызываю метод,
$("body").on("change", "#ddlregion", function () {
var selectedRegion = $(this).val();
$('#ddlcity').prop('disabled', false);
$("#ddlcity").find("option").each(function () {
if ($(this).data("region") == selectedRegion) {
$(this).show();
} else {
$(this).hide();
}
});
});
Он работает нормально.
Теперь я пытаюсь использовать тот же подход в HTML помощниках DropDownList,
<div class="form-group">
@Html.LabelFor(model => model.RegionId, "RegionId", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("RegionId", null, new { @class = "form-control"})
@Html.ValidationMessageFor(model => model.RegionId, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.CityId, "CityId", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("CityId", null, htmlAttributes: new { @class = "form-control", @data_region="RegionId" })
@Html.ValidationMessageFor(model => model.CityId, "", new { @class = "text-danger" })
</div>
</div>
$("body").on("change", "#RegionId", function () {
var selectedRegion = $(this).val();
alert("test");
$('#CityId').prop('disabled', false);
$("#CityId").find("option").each(function () {
if ($(this).data("region") == selectedRegion) {
$(this).show();
} else {
$(this).hide();
}
});
});
using above script it not not calling on change.
, чем я делаю изменения в раскрывающемся списке регионов и меняю скрипт следующим образом,
@Html.DropDownList("RegionId", null, new { @class = "form-control",onchange="callChangefunc(this.value)"})
function callChangefunc(val) {
var selectedRegion = $(this).val();
alert("test");
$('#CityId').prop('disabled', false);
$("#CityId").find("option").each(function () {
if ($(this).data("region") == selectedRegion) {
$(this).show();
} else {
$(this).hide();
}
});
}
Здесь я получаю эту ошибку,
Uncaught TypeError: Невозможно прочитать свойство 'toLowerCase' из неопределенного
Надежды на ваши предложения