如何在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自动完成中传递文本框值的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Laravel 5.7 中将多个数据库数据传递到 jQuery 的自动完成(AJAX)中
如何将 JSON 对象内的 JSON 数组传递给 jQuery 自动完成