【发布时间】:2016-10-04 17:05:31
【问题描述】:
我有一个下拉列表,它从模型中获取其值并首先填充。单击该下拉列表时,我使用 AJAX 填充其他值。我可以填充下拉列表,但是一旦我从下拉列表中选择一个选项,它就会重置为下拉列表中的第一个值。我想要的是在单击时填充一次下拉菜单,然后像普通下拉菜单一样工作。怎么设置条件?
这是使用定义的值'field.Value'初始设置下拉值的代码
ddlValue = "<option value="+field.Value+ " selected='selected'>" + field.Value+"</option>";
<td><select id='@String.Format("selValue{0}", field.Field)' class='ddlValue'>@Html.Raw(ddlValue)</select></td>
这是填充它的 AJAX 函数。
$('body').on('click', '.ddlValue', function () {
var target = event.target.id;
var rowId = $('#' + target).closest("tr").prop("id");
var field = $('#' + rowId).find(".fieldvalue").html();
$.ajax({
cache: false,
url: '@Url.Action("PopulateDropdown", "AdvancedSearch")',
type: "POST",
data: { Field: field }
}).done(function (data) {
var listb = $('#' + target);
listb.empty();
$.each(data.value, function (index, value) {
listb.append($('<option>', {
value: value,
text: value
}, '<option/>'))
});
});
});
【问题讨论】:
-
您是否要让下拉列表自行填充?
-
@FailedUnitTest 我只用一个值填充下拉列表。当有人点击下拉菜单时,我使用点击功能来填充其余部分。
-
鉴于提供的代码,所描述的行为似乎是合理的。每次单击下拉菜单时,单击的下拉菜单将被清空并重新填充。这不是你想要的吗?
-
是的 @tpdietz 是正确的,每次单击选项时都会重新填充下拉列表,从而始终选择第一个值。我个人不喜欢在点击时填充下拉菜单的想法。为什么你在点击时填充它,你这样做是为了什么?为什么不从一开始就填充所有值?
-
我同意@FailedUnitTest。尽管您的问题有解决方案,但我认为使用 ajax 填充单击下拉菜单有点粗略。如果接收响应需要 1 秒会发生什么?用户可能会感到困惑。无论如何,我祝你好运!
标签: javascript jquery ajax drop-down-menu