如何强制jQuery .change函数从自动完成对象中捕获用户选择
How to force the jQuery .change function to catch user selection from an autocomplete objects
我有以下具有自动完成功能的文本字段:-
目前我写了以下代码来捕获文本框内的内容:-
$("#TextBox").change(function () {
$.getJSON("@Url.Content("~/Switch/LoadRelatedIPs")", { searchterm: $("#TextBox").val(), SearchBy: $("#ChoiceTag").prop("checked") ? $("#ChoiceTag").val() : $("#ChoiceName").val(), },
function (CustomerData) {
我面临的问题是,getJSON中的$("#TextBox").val()
,只会捕获文本框中已经存在的值,而不是用户从自动完成结果中选择的值。例如,在上面的图片中,$("#TextBox").val()
将是v10020,而不是全文,应该是v100205 ?谁能建议如何解决这个问题?我不想在自动完成中使用选择,因为这样我就会有重复的调用,一个来自.change,另一个来自自动完成选择函数?
当文本框失去焦点时触发change事件,这将在用户单击自动完成建议时发生,这是在自动完成javascript填充完整值之前。这是来自更改事件的正确行为。
似乎您想要的不是在设备资源标签字段更改时执行代码,而是在输入正确(完整)值时执行代码。可能的解决方案:除了处理自动完成的选择事件之外,当它执行搜索时,检查是否只返回一个结果,并且它与用户输入的内容匹配,然后自动选择该结果。所以在上面的例子中,如果用户输入完整字符串"V100205",自动补全将返回一个结果"V100205"。然后取消显示自动完成,而是执行代码。
不清楚是什么代码在处理自动完成功能。您可能需要修改您的插件或脚本,以便在设置新值后触发更改事件。
$("#TextBox").val("New Value").trigger("change");
你也可以监听当输入文本发生变化时触发的各种事件:
$('#TextBox').on('input propertychange paste', function() {
});
相关文章:
- JQuery对动态创建的对象进行选择
- javascript对象操作:根据指定条件选择属性
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 仅使用文件对象选择单个文件
- Angular:使用选择列表选择过滤代码中的对象
- Javascript:从数组中的对象中选择属性
- 仅选择父对象
- Javascript / AngularJS对象选择基于表达式作为键
- Jquery上一个对象选择器
- JavaScript:使用用于Protractor测试的页面对象选择下拉列表项
- 在javascript对象选择器中使用变量
- 在 3D 场景中处理.js对象选择
- 使用角度设置多个对象(选择)
- 如何使用 JavaScript 变量值作为对象选择器
- 分层画布上的织物对象选择
- 使用对象选择根时,如何选择子元素
- 如何将字符串解析为javascript对象选择器
- 如何将选项对象选择为默认值
- 对象选择和调整大小的常用方法
- 阻止HTML画布对象选择