22

我正在使用 jQuery 自动完成并且它工作正常,现在我想在发生以下情况时从 jQuery 的会话中存储一个变量。

当有人键入任何单词时,jQuery 会显示建议下拉列表,如果有人从该建议下拉列表中选择一个项目。

我想捕获以上点并将变量存储在会话中。

我搜索了谷歌、StackOverflow,但没有找到相关的解决方案。我的自动完成代码如下:

  $(".autosearch-smart").autocomplete('Home/GetCompanyNames', {
    minChars: 1,
    width: 402,
    matchContains: "word",
    autoFill: true
});

这就是我试图做的:

  $(".autosearch-smart").autocomplete('Home/GetCompanyNames', {
    minChars: 1,
    width: 402,
    matchContains: "word",
    autoFill: true,
    select: function (a, b) {
        alert("selected");
    }

});

编辑:选择事件处理程序也不起作用

我正在使用带有 C# 的 asp.net MVC3。请帮助我并提前感谢。

4

2 回答 2

32

因此,如果我理解正确,您希望将所选值存储在变量会话中

您可以通过以下代码从所选项目中获取值:

  $(".autosearch-smart").autocomplete('Home/GetCompanyNames', {
minChars: 1,
width: 402,
matchContains: "word",
autoFill: true,
select: function (event, ui) {
    var label = ui.item.label;
    var value = ui.item.value;
   //store in session
  document.valueSelectedForAutocomplete = value 
}
});

值和标签是来自服务器的 json 对象

希望这可以帮助

于 2012-10-04T08:15:36.233 回答
3

好吧,如果您想使用 asp.net mvc3 存储在会话中,请执行以下操作

$(".autosearch-smart").autocomplete('Home/GetCompanyNames', {
    minChars: 1,
    width: 402,
    matchContains: "word",
    autoFill: true,
    select: function (event, ui) {   //must be cleared with function parameter
        //alert(ui.item.label);  //will show you the selected item

       $.ajax({
          type: 'POST',
          url: '/Controller/Action1',  //whatever any url
          data: {label: ui.item.label},
          success: function(message) { if(message.data == true) ... else ... },
          dataType: 'json'
       });

    }

});

和控制器

[HttpPost]
  public JsonResult Action1( string label ) {

     this.Session["AnyValue"] = label;

     return Json( new {
        data = true
     }, JsonRequestBehavior.AllowGet );
  }
于 2012-10-04T08:18:35.727 回答