2012-10-18 51 views
0

你好我有填充文本框的基础上的搜索条件,即如果我键入一个然后项目开始于一个填充文本框中,我也用另一个文本框显示partyname,但问题是当我选择项目文本框中的值它不显示在文本框中,但派对名称文本框正在工作,即当我从下拉列表中选择partyname它显示在隐藏字段和文本框,但在项目的情况下它不工作即时发送我的jQuery功能,所以请帮助jquery-autocomplete-multiple-output

$(document).ready(function() { 
    SearchText(); 
    SearchItem(); 
}); 

function SearchText() { 
    $('input[name$="tbAuto"]').autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
       url: "PartyList.asmx/FetchPartyList", 
       data: "{ 'prefix': '" + request.term + "' }", 
       dataType: "json", 
       type: "POST", 
       contentType: "application/json; charset=utf-8", 
       success: function(data) { 
        response(data.d); 
       }, 
       error: function(XMLHttpRequest, textStatus, errorThrown) { 
        alert(textStatus); 
       } 
      }); 
     }, 
     minLength: 1, 
     focus: function(event, ui) { 
      $('input[name$="tbAuto"]').val(ui.item.Name); 
      return false; 
     }, 
     select: function(event, ui) { 
      $('input[name$="tbAuto"]').val(ui.item.Name); 
      $('input[name$="tbHidden"]').val(ui.item.value); 
      return false; 
     } 
    }).data('autocomplete')._renderItem = function(ul, item) { 
     return $('<li>').data('item.autocomplete', item).append('<a>' + item.Name + '</a>').appendTo(ul); 
    }; 
} 


function SearchItem() { 
    $('input[name$="txtitem"]').autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
       url: "Itemslist.asmx/FetchItemList", 
       data: "{ 'prefix': '" + request.term + "' }", 
       dataType: "json", 
       type: "POST", 
       contentType: "application/json; charset=utf-8", 
       success: function(data) { 
        response(data.d); 
       }, 
       error: function(XMLHttpRequest, textStatus, errorThrown) { 
        alert(textStatus); 
       } 
      }); 
     }, 
     minLength: 1, 
     focus: function(event, ui) { 
      $('input[name$="txtitem"]').val(ui.item1.Name); 
      return false; 
     }, 
     select: function(event, ui) { 
      $('input[name$="txtitem"]').val(ui.item1.Name); 
      $('input[name$="hditem"]').val(ui.item1.value); 
      return false; 
     } 
    }).data('autocomplete')._renderItem = function(ul, item1) { 
     return $('<li>').data('item1.autocomplete', item1).append('<a>' + item1.Name + '</a>').appendTo(ul); 
    }; 
} 

ItemInfo类:

public class Iteminfo 
{ 
    connection oConnection = new connection(); 
    Control oControl = new Control(); 
    AccountInfo oAccount = new AccountInfo(); 
    connection c = new connection(); 

    public string Title { get; set; } 
    public string Name { get; set; } 
    public string value { get; set; } 

    public List<Iteminfo> GetItems(string prefixText) 
    { 
     List<Iteminfo> itemList = new List<Iteminfo>(); 

     try 
     { 
      DataTable dt; 
      AccountInfo oAccount = new AccountInfo(); 
      //dt = oAccount.GetAccountInfo((int)HttpContext.Current.Session["CompCode"], 0); 
      dt = oAccount.GetIteminfo(prefixText); 
      if (dt.Rows.Count > 0) 
      { 
       for (int i = 0; i < dt.Rows.Count; i++) 
       { 
        itemList.Add(new Iteminfo() { Name = dt.Rows[i]["groupname"].ToString() + dt.Rows[i]["subgroup"].ToString() + dt.Rows[i]["itemname"], Title = dt.Rows[i]["itemname"].ToString(), 
        value = dt.Rows[i]["groupname"].ToString() + dt.Rows[i]["subgroup"].ToString() + dt.Rows[i]["itemname"].ToString()+";"+dt.Rows[i]["itemcode"].ToString() }); 
       } 
      } 
     } 
     catch (SqlException) 
     { 
      itemList.Add(new Iteminfo() { Name = "Problem Getting Results.", value = "Error" }); 
     } 

     if (itemList.Count == 0) 
      itemList.Add(new Iteminfo() { Name = "Nothing to Display.", value = "Info" }); 

     return itemList; 
    } 
} 

页方法:

[WebMethod] 
public List<Iteminfo> FetchItemList(string prefix) 
{ 
    var items = new Iteminfo(); 
    var fetchitems = items.GetItems(prefix); 
    //.Where(m => m.Name.ToLower().StartsWith(prefix.ToLower())); 

    // .Where(m => m.Name.ToLower().StartsWith(prefix.ToLower())); 
    return fetchitems.ToList(); 
} 
+0

您是否也可以提供您的HTML/ASPX代码,并使问题描述更清晰一点? – tpeczek

+0

为什么选择事件没有生成第二个文本框UI元素 – iProgrammer

+0

那么答案对你有帮助,你还有问题吗? – tpeczek

回答

0

你的第一个问题似乎是在SearchItem功能。您不应该将所有这些item更改为item1,因为这是内部jQuery UI名称,并且它始终是相同的(对于所有实例)。所以,你的JavaScript函数应该是这样的:

function SearchItem() { 
    $('input[name$="txtitem"]').autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
       url: "Itemslist.asmx/FetchItemList", 
       data: "{ 'prefix': '" + request.term + "' }", 
       dataType: "json", 
       type: "POST", 
       contentType: "application/json; charset=utf-8", 
       success: function(data) { 
        response(data.d); 
       }, 
       error: function(XMLHttpRequest, textStatus, errorThrown) { 
        alert(textStatus); 
       } 
      }); 
     }, 
     minLength: 1, 
     focus: function(event, ui) { 
      $('input[name$="txtitem"]').val(ui.item.Name); 
      return false; 
     }, 
     select: function(event, ui) { 
      $('input[name$="txtitem"]').val(ui.item.Name); 
      $('input[name$="hditem"]').val(ui.item.value); 
      return false; 
     } 
    }).data('autocomplete')._renderItem = function(ul, item) { 
     return $('<li>').data('item.autocomplete', item).append('<a>' + item.Name + '</a>').appendTo(ul); 
    }; 
} 

有可能是关于选择一些进一步的错误,但是这是不可能告诉没有HTML/ASPX代码。