jQuery .val(#) 在 AJAX 调用后不会更改选择 - 如果调试/暂停,则有效
jQuery .val(#) does not change selection following AJAX call - works if debugging/paused
我有一个有趣的问题 - 当我执行 AJAX 调用时,该调用使用基于页面加载或输入的过滤器的新条目刷新此约会列表下拉列表 - .val(( 方法不会设置
这就是 AJAX 方法的成功将要做的事情 - 基本上它使用新条目设置备份 AppointmentList 下拉列表:
$.map(data, function (item) {
$('#AppointmentList').get(0).options[$('#AppointmentList').get(0).options.length] = new Option(item.AppointmentTime, item.ID);
});
这就是调用函数的原因,该函数基本上只包含重新填充 #AppointmentList 下拉列表的 $.ajax(( 方法。当我取回新的值集时 - 我仍然需要它来预先填充旧的"约会"。
var tempVal = $('#AppointmentList').val();
DropDownList();
$('#AppointmentList').val(tempVal);
这将不执行任何操作,并且会选择重新创建的列表中的第一个元素。
但是,如果我在以下位置放置断点:
$('#AppointmentList').val(tempVal);
然后似乎已经过去了足够的时间来更改此下拉列表 - 如果有断点并且我继续 - 如果我正在调试 Javascript,下拉列表将更改回我想要的值。
关于如何重构它的任何想法?我一直在想,也许当我们实际执行 $.map(( 函数时,我们可以在那里设置我们的旧值 - 但这段代码似乎有效......在 Ajax 完成和我需要再次设置 .val(( 之间我应该有更多的时间。
问一个愚蠢的问题 - 找出一个愚蠢的答案 - 我猜。异步。咄。
将这两行移动到 $.ajax(( 调用上方的位置:
var tempVal = $('#AppointmentList').val();
然后,将设置值的行放在成功中,但在 $.map(( 之后:
$('#AppointmentList').val(tempVal);
相关文章:
- 如果选择单选按钮,则显示字段
- 如果选择单选按钮,则显示表单
- 如果选择了当前年份,则在Select元素中仅显示当前和未来月份
- 如果选择了特定的单选按钮,如何显示窗体
- 如果选择了Dropdown,则推入一个数组,否则,推入另一个数组
- jQuery折叠选项卡(如果选择相同)
- 如果选择了其他选择项目,则隐藏选择项目
- JavaScript / jquery:如果选择了单选按钮并且数据属性符合条件,则添加类
- 如果选择了多个选项,则使用 jQuery 显示隐藏的表单元素
- 如果选择了某个值,jquery将禁用项选项
- 如果选择了某个项目,将显示Getting复选框
- 如果选择/下拉列表发生更改,则Mysql会更新
- 如果选择了..单选按钮,则如何从多行中发送特定行的多个单元格数据
- 如果选择框已在其他框中选中,则从该框中删除选项
- 如果选择'其他'然后填充输入字段
- jQuery 或 JavaScript 验证,如果选择了带有例外的单选按钮
- 如果选择框选项具有值,则切换禁用的属性
- 如果选择了下拉列表中的特定值,GAE 任务队列将不会继续
- 单击 标记时,显示叠加层,如果选择“是”作为选项,则跟随 的 href URL
- JavaScript可以“检测”浏览器打印设置(特别是如果选择了打印背景颜色)