2013-10-08 2 views
-1

저는 자바 스크립트를 처음 사용하며 현재 입력 텍스트 필드에 입력 된 문자열을 하위 문자열로 포함하는 배열의 모든 문자열을 문서에 쓰는 기능을 작성하려고합니다.주어진 하위 문자열을 포함하는 모든 단어 찾기

<!doctype html> 
<html lang="en"> 
<head> 
<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
</head> 
<body> 
<input type="text" > 
    <p></p> 
<script> 

    var names = ["armadillo", "blue", "com", "demo", "engine"]; 

    $("input").keypress(function() { 
    var incomplete = $(this).val(); 

    searchStrings(); 

    }; 

    function(searchStrings()) 
    { 
     for(name in names) 
     { 
      if(name.indexOf(incomplete) != -1) 
      { 
       document.write(name); 
      } else 
      { 
       document.write("no match found"); 
      } 
     } 
    }; 
}); 
</script> 
</body> 
</html> 
+0

무엇이 당신 질문입니까? – Mathletics

+0

'function (searchStrings())'이 아마도 문제 일 것입니다. 괄호가 너무 많습니다. 또한 함수에 값을 전달해야합니다. – Mathletics

+0

[jQuery 자동 완성] (http://jqueryui.com/autocomplete/)을 처음부터 개발하려고하십니까? 왜? – h2ooooooo

답변

0

http://jsfiddle.net/DrekX/

이후 당신은 jQuery를 사용하여 그것을 최대한 활용합니다.

var names = ["armadillo", "blue", "com", "demo", "engine"]; 

// references to jQuery belong in a wrapper 

jQuery(document).ready(function($){ 

    $("input").keyup(function() {   
     searchStrings(this.value); 
    }); 

    function searchStrings(search_value) 
    { 
     if(!search_value.length){ 
      $('#names-found').html(''); 
      return; 
     } 

     var names_found = $.map(names, function(value, index){    
      return ~value.indexOf(search_value) ? value : null; 
     }); 

     $('#names-found').html(
      names_found.length == 0 ? 'No names found.' : 
      '<b>Names found:</b> ' + names_found.join(', ') 
     )   
    } 
}); 
+0

일치하는 단어를 목록에 추가하는 방법을 알려주시겠습니까? 나는 대부분 호기심에서 자동 완성 기능을 만드는 법을 알아 내려하고있다. 당신의 대답은 굉장했습니다. 정말 고맙습니다! –

+0

멋진 답변을 투표하십시오. 나는 당신이 향하고 있었던 곳인 느낌을 가졌습니다. 체크 아웃 http://jqueryui.com/autocomplete/ 그것은 꽤 좋다. – iambriansreed

0

난 당신이

function searchStrings(incomplete) 
    { 
     for(name in names) 
     { 
      if(name.indexOf(incomplete) != -1) 
      { 
       document.write(name); 
      } else 
      { 
       document.write("no match found"); 
      } 
     } 
    }; 

를 (추가 paranthesis 제거) 그리고 당신이 걸리는 귀하의 searchStrings() 기능을 다시 작성할 필요

searchStrings(incomplete); 
+0

도움 주셔서 감사합니다! 변경 후에도 키 누르기에 대한 문서에 아무 것도 쓰여지지 않습니다. –

1

과 같이 호출이 같은 함수를 변경할 필요가 있다고 생각 논증 :

function searchStrings(incomplete) 
{ 
    for(name in names) 
    { 
     if(name.indexOf(incomplete) != -1) 
     { 
      document.write(name); 
     } else 
     { 
      document.write("no match found"); 
     } 
    } 
}; 

그리고 당신은 다음과 같이 호출해야합니다

searchStrings(incomplete); 

당신의 구문 오류를 수정, 코드는 다음과 같이한다 :

var names = ["armadillo", "blue", "com", "demo", "engine"]; 

function searchStrings(incomplete) { 
    for (name in names) { 
     if (name.indexOf(incomplete) != -1) { 
      alert(name); 
     } else { 
      alert("no match found"); 
     } 
    } 
}; 

$("input").keyup(function() { 
    var incomplete = $(this).val(); 
    searchStrings(incomplete); 
}); 

JSFiddle

관련 문제