如何在jquery自动完成中传递文本框值

Posted

技术标签:

【中文标题】如何在jquery自动完成中传递文本框值【英文标题】:How to pass the textbox value in jquery autocomplete 【发布时间】:2012-04-04 12:33:18 【问题描述】:

我在我的 Web 应用程序 (.Net 3.5) 的某些文本框中使用 jquery 自动完成功能。我的问题是前缀文本始终为空白。不会为其分配正确的值。

function TextBoxAutoComplete(scope, controlId, contextKeyId) 

var txtbox = null;
var flagValue;
if (scope) 
    txtbox = $('input[id$="' + controlId + '"]', scope);
 else 
    txtbox = $('input[id$="' + controlId + '"]', document);


var contextKeyValue = $('input[id$="' + contextKeyId + '"]', document).val();

$(txtbox).autocomplete("../Handlers/MiscHandler.ashx", 
    minChars: 0,
    extraParams:  prefixText: $(this).val(), count: '10', contextKey: contextKeyValue, flag: 'codePart' ,
    selectFirst: false,
    width: 49
).result(function(event, data, formatted)  // result is a separate function
    var dummy = new Object();
    dummy.value = data[1];
    dummy.text = data[0];
    var test = new Test(dummy);
);

我在文档准备好时调用上述方法。这里的问题是当我将文本框值(当前键入的文本)传递给变量'prifixText'时,我没有得到它 前缀文本:$(this).val()

谁能帮我解决这个问题?谢谢

【问题讨论】:

如果您查询 $(txtbox).val(),您会得到什么吗?我可能是错的,但我认为这种情况下的“this”是实际的自动完成本身,它没有选定的值 值得指出的是,您在这里没有使用 jQuery UI 版本的自动完成功能。您应该添加一个指向您正在使用的插件的链接,因为那里有几个类似的版本。 @mattytommo - 感谢您的快速回复。我也尝试过同样的方法,但没有成功。 @Mark Schultheiss - 实际上我们使用了一个插件,jQuery Autocomplete plugin 1.1 (/* * jQuery Autocomplete plugin 1.1 * * 版权所有 (c) 2009 Jörn Zaefferer * * 在 MIT 和 GPL 许可下双重许可: * opensource.org/licenses/mit-license.php * gnu.org/licenses/gpl.html * * 修订: $Id: jquery.autocomplete.js 15 2009-08-22 10:30:27Z joern.zaefferer $ */) 我们添加了 js 文件 jquery.autocomplete.js到我的 Web UI 项目。 【参考方案1】:

尝试使用search 事件,在您的示例中,您处于错误范围内。

http://jqueryui.com/demos/autocomplete/#event-search

设置选项使用http://jqueryui.com/demos/autocomplete/#method-option

【讨论】:

这里好像没有使用 jQuery UI 版本。【参考方案2】:

终于在朋友的帮助下找到了答案。

从处理程序“../Handlers/MiscHandler.ashx”中,我尝试通过访问 'prefixText' 的值来访问文本框文本,如下所示。

string prefixText = string.Empty;
if (context.Request["prefixText"] != null)

prefixText = context.Request["prefixText"].ToString();

但它不起作用,不允许我获取文本框的值。而不是我访问了查询字符串中的“q”参数,这是默认的。

if (context.Request["q"] != null)

prefixText = context.Request["q"].ToString();

这很完美,jquery 代码没有问题,问题是我如何处理 HTTP 请求。谢谢。

【讨论】:

以上是关于如何在jquery自动完成中传递文本框值的主要内容,如果未能解决你的问题,请参考以下文章

如何在自动完成jQuery中制作粗体匹配文本

如何在 Laravel 5.7 中将多个数据库数据传递到 jQuery 的自动完成(AJAX)中

如何将 JSON 对象内的 JSON 数组传递给 jQuery 自动完成

如何删除/更改 JQuery UI 自动完成助手文本?

根据文本框值javascript修改complete.ly选项

如何使用 jquery ui 自动完成使匹配的文本变为粗体?