如何强制jQuery .change函数从自动完成对象中捕获用户选择

How to force the jQuery .change function to catch user selection from an autocomplete objects

本文关键字:对象 选择 用户 jQuery 何强制 change 函数      更新时间:2023-09-26

我有以下具有自动完成功能的文本字段:-

目前我写了以下代码来捕获文本框内的内容:-

$("#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() {
});