【问题标题】:How to pass the textbox value in jquery autocomplete如何在jquery自动完成中传递文本框值
【发布时间】: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 项目。

标签: c# javascript jquery


【解决方案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 请求。谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 2017-08-26
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多