2012-03-14 2 views
3

데이터베이스에 저장된 항목 목록이 있습니다. 내가하고 싶은 기능이있다키 입력에 대한 동적 검색 결과

@{foreach (var user in result) { 
      <tr><td>@table.attribute</td> <td>@table.secondAttribute @table.thirdAttribute</td> 
       <td><input type="checkbox" name="attribute" value="attribute" /></td></tr> 

...

  var db = Database.Open("database"); 
      var sql = "SELECT * from table"; 
      var result = db.Query(sql); 

: 나는 항목을 목록에 foreach 문을 사용하고

는 다음과 같은 각각의 항목에 체크 박스로 반환 사용자가 문자를 입력 할 때 사용자가 입력 한 문자를 기반으로하는 내 foreach로 나열된 항목의 수를 제한하는 텍스트 상자. 그래서 JQuery autoComplete 모듈을 사용해 보았습니다 만,이 경우에는 어떻게 사용하는지, 또는 가능하다면 완전히 모르겠습니다.

@{ 
    var db = Database.Open("database"); 
    var term = Request.QueryString["term"] + "%"; 
    var sql = "SELECT * from table where attribute LIKE @0 OR secondAttribute LIKE @0 OR thirdAttribute LIKE @0"; 
    var result = db.Query(sql, term); 
    var data = result.Select(p => new{label = p.attribute + " " + p.secondAttribute}); 
    Json.Write(data, Response.Output); 
} 

이것은 물론, 단지 데이터를 검색 : getUsers에서 다음

그리고 :

$(function(){ 
      $('#name').autocomplete({source:'getUsers'}); 
     }); 

이 ... 자신의 이름을 입력

그래서 나는 추가 텍스트 상자에 대한 반환 된 확인란을 전혀 구분하지 않습니다. 내가 할 수있는 방법이 있니? 단지 검색 클라이언트 측 의견에 따라 허용되는 경우

+0

전체 사용자 목록의 기간은 얼마나됩니까? 서버 측 코드를 그대로두고 클라이언트 측 코드만으로 동적으로 행을 보이거나 숨길 수 있습니다. – nnnnnn

+0

@nnnnnn 그게 이상적 일거야, 실제로, 생각 해보니. 목록은 너무 길지는 않지만 잘하면 성장할 것입니다. 내가 어떻게 할 수 있니? –

답변

6

, 여기에 그것을 할 수있는 정말 간단한 방법 :

$(document).ready(function() { 
    var $rows = $("tr"); 

    $("#yoursearchinput").keyup(function() { 
     var val = $.trim(this.value); 
     if (val === "") 
      $rows.show(); 
     else { 
      $rows.hide(); 
      $rows.has("td:contains(" + val + ")").show(); 
     } 
    }); 
}); 

데모 다음은 위의 대소 문자 구분을 할 것 http://jsfiddle.net/k5hkR/

검색. 여기에 케이스를 수행하는 약간 더 복잡한 버전입니다 를 구분 검색 :

에게
$(function() { 
    var $cells = $("td"); 

    $("#search").keyup(function() { 
     var val = $.trim(this.value).toUpperCase(); 
     if (val === "") 
      $cells.parent().show(); 
     else { 
      $cells.parent().hide(); 
      $cells.filter(function() { 
       return -1 != $(this).text().toUpperCase().indexOf(val); 
      }).parent().show(); 
     } 
    }); 
});​ 

데모 : http://jsfiddle.net/k5hkR/1/

두 번째 솔루션은 내가 당신에게 일반 아이디어를주고 채찍질 뭔가가있다 - 분명히이 될 수 있습니다 정리하고 더 효율적으로 만들었습니다.

+0

이것은 정확히 내가 원했던 것입니다! 고마워요! :) –

관련 문제