2011-12-08 35 views
0

我有以下格式的多種形式的頁面:如何創建這個搜索行動

<form id="new_celebration1000" accept-charset="UTF-8" action="/celebrations" method="post"> 
    <input id="friend" type="hidden" name="celebrant_details" value="%7B%22name%22%3A%22Venessa%20Stackpole%22%2C%22provider_user_id%22%3A%221000%22%2C%22birthday%22%3A%2212/10%22%2C%22provider_name%22%3A%22Facebook%22%7D"> 
    <input id="manager" type="hidden" name="manager_details" value="%7B%22name%22%3A%22Mitchell%20Gould%22%2C%22provider_user_id%22%3A%22751640040%22%2C%22birthday%22%3A%2210/07/1967%22%2C%22email%22%3A%[email protected]%22%2C%22provider_name%22%3A%22Facebook%22%7D"> 
    <li>Venessa Stackpole</li> 
    <li>12/10</li> 
    <li> 
    <img src="http://graph.facebook.com/1000/picture"> 
    </li> 
    <input class="button-mini-subtle submit" type="submit" alt="select" value="select"> 
    </form> 

由於頁面可能包含數百個,這些我想給用戶一個搜索框。 當他們開始在框中輸入內容時,我想隱藏與這些字母不匹配的用戶的表單和數據,這使得他們更容易找到他們的朋友。

我是一個NOOB,真的很感謝一些幫助,指出我在這個正確的方向。 每個表單都有一個唯一的ID,如圖所示。但我不知道如何選擇基於值的說<li>User Name</li>

我希望能夠做到這一點,如果可能的話。

回答

2

這裏是一個例子。你可以看到它的工作here

HTML #searchBox添加

的Javascript

var $forms = $('form'); 
$(function() { 
    $('#searchBox').keyup(function() { 
     var $form, needle = $(this).val().toLowerCase(), haystack; 
     $forms.each(function() { 
      $form = $(this); 
      haystack = $form.find('li:first').text().toLowerCase(); 
      $form.toggle(haystack.indexOf(needle) > -1); 
     }); 
    }); 
}); 
+0

嗨埃姆雷二崁,我會給這個一展身手。看起來不錯。我會回報並非常感謝你。我喜歡在乾草堆主意:) – chell

+0

嘿我試了一下,$ forms.each(函數(){...似乎並沒有開火,好像它不循環,我試着做一個測試警報($形式),它產生對象Object。作爲NOOB,我不知道如何查看對象Object的內容,雖然:( – chell

+0

非常感謝你的工作,你是一個搖滾明星! – chell

0

我一般會給一個類你li,e.g:

<li class="username">User Name</li> 

然後使用 '$( 「li.username」)' 找到所有的li S和過濾器。對於過濾器,您需要根據用戶輸入創建一個新的RegEx對象庫,並與li中的文本進行匹配。然後在已過濾的li上執行parentUntil("form")以查找表單。

我還沒有碰過jQuery很長一段時間,可能在語法上有一些錯誤。但這種方法應該是正確的,因爲我在多個實例中使用它。