下拉值未被保留
Dropdown value not being retained
本文关键字:保留 更新时间:2023-09-26
我有一个下拉菜单,它从一个模型中获取它的值,并首先填充。单击该下拉菜单后,我使用AJAX填充其他值。我能够填充下拉菜单,但是一旦我从下拉菜单中选择了一个选项,它就会在下拉菜单中重置为第一个值。我想要的是下拉填充一次点击,然后像一个正常的下拉功能。我该如何为它设置一个条件?
这是初始设置下拉值与定义值'字段的代码。价值"
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/>'))
});
});
});
如果希望ajax填充只发生一次,则需要在事件发生后删除事件侦听器。像这样:
$('.ddlValue').on('click', function () {
$(this).off('click'); //This removes the event after it has happened once.
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/>'))
});
});
});
请注意,下面的将不工作:
$('body').on('click', '.ddlValue', function () {
$(this).off('click');
...
这样做似乎很愚蠢。您可以在loan上执行相同的操作,而无需与用户进行任何交互来填充下拉列表。
也就是说,修复你的解决方案只需添加一个全局变量
$first = true
$('body').on('click', '.ddlValue', function () {
if($first) {
$first = false
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/>'))
});
}
});
});
相关文章:
- 分派点击事件并保留击键修饰符
- 如何使用jquery强制一个单词更改大小写等以保留品牌
- 提交后保留下拉选择的值
- 刷新后保留对网页的更改
- 在mvc应用程序中,在回发时保留最初隐藏的文本框的隐藏或可见状态
- Flash Uploadify在调用我的MVC控制器时没有保留会话/授权
- 当设置addFromAutocompleteOnly时,剩余文本将保留在输入字段中
- 使用递归属性迭代保留属性结构
- Jquery html() 和保留元素名称
- 如何将字符串拆分为字符,但在javascript中保留空格
- 离开页面导航后保留文本区域内容
- 如何在使用JavaScript或jQuery刷新父页面后保留iframe-src
- Javascript和RegEx:拆分并保留分隔符
- 如何生成保留标点符号的简单字谜
- 如何设置类型化对象的属性,同时保留它's类型
- 关闭谷歌地图中推荐的骑行道路,但保留专用自行车道
- 在IndexedDB中保留空间
- 如何使网络应用程序保留信息
- 调试器;[错误]194:11:标识符是一个保留字
- 保留“;这个“;在一个变量中;这个“;使用此变量