我會盡我所能地盡我所能地解釋我的情況。它的缺點是基於文本框中的值,我需要隱藏下拉列表中的選項。根據文本框中輸入的值隱藏下拉列表選項?
我有一個建築限制的文本框。它有一個ID,然後因爲有在同一個頁面上的多個建築物的位置數:
<div class="col-md-6 col-sm-6">
<label>Limit</label>
@Html.TextBoxFor(m => m.Building.Limit, htmlAttributes: new { id = "buildingLimit-" + Model.LocationNum })
</div>
下面這個我與不同的ID,但具有相同的位置號碼的下拉列表:
<div class="col-md-6 col-sm-6">
<label>Occurrence</label>
@Html.DropDownListFor(m => m.Earthquake.Occurrence, new SelectList(Model.Earthquake.AggregateList, "Value", "Text"), htmlAttributes: new { id = "EarthquakeOcc-" + Model.LocationNum })
</div>
現在,該下拉列表並不完全綁定到buildingLimit。它顯示可以選擇的幾個不同的值。我想要做的是,如果buildingLimit是250,000美元,那麼下拉列表的值不應大於此值。如果他們再次將其更改爲1,000,000美元,那麼下拉列表需要調整以使其值不超過1,000,000美元
我現在真的一直在努力解決這個問題。這聽起來很簡單,但我不知道如何做到這一點。
這是我到目前爲止有:
$("[id^='buildingLimit-']").change(function() {
var location = $(this).attr("id").split("-")[1];
var buildingLimit = $(this).val();
var occArray = [];
$("[id^='EarthquakeOcc-']").each(function (i, selected) {
occArray[i] = $(selected).val();
alert(occAccary[i]);
if (occArray[i] > buildingLimit) {
$("[id^='EarthquakeOcc'] option[value = occArray[i]").remove();
}
});
我知道,有幾件事情不妥之處:當文本框被改變,它只是刪除它纔會起作用。不通過.append()加回來。此外,這些值是硬編碼的:
public List<SelectListItem> AggregateList
{
get
{
if (aggregateList == null)
{
aggregateList = new List<SelectListItem>();
aggregateList.Add(new SelectListItem { Text = "$100,000", Value = "100000" });
aggregateList.Add(new SelectListItem { Text = "$250,000", Value = "250000" });
aggregateList.Add(new SelectListItem { Text = "$500,000", Value = "500000" });
aggregateList.Add(new SelectListItem { Text = "$1,000,000", Value = "1000000" });
aggregateList.Add(new SelectListItem { Text = "$2,000,000", Value = "2000000" });
aggregateList.Add(new SelectListItem { Text = "$3,000,000", Value = "3000000" });
aggregateList.Add(new SelectListItem { Text = "$4,000,000", Value = "4000000" });
aggregateList.Add(new SelectListItem { Text = "$5,000,000", Value = "5000000" });
aggregateList.Add(new SelectListItem { Text = "$6,000,000", Value = "6000000" });
aggregateList.Add(new SelectListItem { Text = "$7,000,000", Value = "7000000" });
aggregateList.Add(new SelectListItem { Text = "$8,000,000", Value = "8000000" });
aggregateList.Add(new SelectListItem { Text = "$9,000,000", Value = "8000000" });
aggregateList.Add(new SelectListItem { Text = "$10,000,000", Value = "10000000" });
aggregateList.Add(new SelectListItem { Text = "$25,000,000", Value = "25000000" });
}
return aggregateList;
}
set { aggregateList = value; }
}
它看起來像你的號碼存儲爲字符串。所以你應該使用parseInt()強制它進行數字比較而不是文本比較。除此之外,你能解釋什麼不起作用嗎? – 2014-09-26 16:49:47
我想我不確定如何根據buildingLimit標準隱藏下拉列表中的某些值。我知道jquery中有.hide(),但在IE 8中不支持我需要支持的東西。我承認我對此很新,並試圖找出一段時間。 – mortey 2014-09-26 17:41:35