选择事件上的Jquery自动完成

时间:2012-10-04 08:07:55

标签: javascript jquery asp.net-mvc jquery-ui jquery-ui-autocomplete

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

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

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

我搜索了Google,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。请帮助我,并提前感谢。

2 个答案:

答案 0 :(得分:21)

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

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

  $(".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对象

希望这有帮助

答案 1 :(得分:1)

好吧,如果您想使用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 );
  }