2011-05-24 88 views
2

我在表中包含以下300條記錄:姓名,地址,城市,州和郵政編碼。設計問題活動記錄搜索與Javascript搜索

  1. 我希望把所有300條記錄一次,當用戶訪問我的應用程序,也許在JSON格式(但不一定,可能是一個數組或Ruby對象),隱淡出人們的視線,但在客戶端。
  2. 我要搜索的客戶端

這些記錄是否有任何簡單的JavaScript/JQuery的圖書館存在在那裏我可以搜索客戶端的數據,僅僅顯示匹配結果。這種方法有什麼不利之處?

功能:用戶訪問應用程序,用戶看到一個搜索欄,用戶鍵入「托萊多」,該應用程序返回2匹配的托萊多記錄。

回答

1

這是非常簡單的工作。不知道你需要一個庫,除了一旦你找到你的結果進行DOM操作。

function searchArrayFields(search, objectArray) 
{ 
    var results = []; 
    for (var i=0; i < objectArray.length; i++) 
    { 
     for (var key in objectArray[i]) 
     { 
      if (objectArray[i][key].indexOf(search) > -1) 
      { 
       results.push(objectArray[i]); 
       break; 
      } 
     } 
    } 
    return results; 
} 

下面是一些例子DOM的東西太多。

function buildAddress(row) 
{ 
    var retVal = '<div class="container"><div class="name">'+row.name + '</div>'; 
    retVal += '<div class="address-line-1">'+ row.address+'</div>'; 
    retVal += '<div class="address-line-2"><span class="city">'+ row.city+'</span>'; 
    retVal += ' <span class="state">'+ row.state+'</span>'; 
    retVal += ', <span class="zip">'+row.zip+'</span></div></div>'; 
    return retVal; 
} 
function displayAddresses(search) 
{ 
    var rows = searchArrayFields(search, global_db); 
    var retVal = []; 
    for (var i=0; i < rows.length; i++) 
    { 
     retVal.push(buildAddresses(rows[i])); 
    } 
    $('#target').html(retVal.join('')); 
} 

假設你的數據都存儲這樣,這將是一個標準的JSON設置:

[{name:'John Doe', address:'111 Main Street', city:'Toledo', state:'OH',zip:44343}];