我会尽我所能地尽我所能地解释我的情况。它的缺点是基于文本框中的值,我需要隐藏下拉列表中的选项。根据文本框中输入的值隐藏下拉列表选项?
我有一个建筑限制的文本框。它有一个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