2

我在我的 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'prefixText时我没有得到文本框值(当前输入的文本) :$(this).val()

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

4

2 回答 2

0

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

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

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

于 2012-04-04T12:47:34.570 回答
0

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

从处理程序“../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 请求。谢谢。

于 2012-04-05T10:43:54.953 回答