2013-09-30 5 views
-1
document.getElementById('search_field').onkeypress = function(e) { 
     if (!e) e = window.event; 
     var keyCode = e.keyCode || e.which; 
     if (keyCode == '13') { 
      window.location.href = '/search/?s=' + $('#search_field').val(); 
      return false; 
     } 
    }; 

마지막 브래킷은 오류를 표시합니다. 모든 코드 경로가 값을 반환하지는 않습니다. 여기에 문제가있는 것 같습니까? 감사모든 코드 경로에서 값 (JavaScript)을 반환하지 않습니다.

+2

이것은 jquery가 아닙니다 ... $ ('# search_field')를 제외한 순수 js 코드입니다. –

+0

사용중인 도구가 무엇이든간에 JavaScript 코드가 많으면 문제가있는 것 같습니다. :-) –

답변

1

return true.

와 함수는 (13)가 흐름을 누르면 다른 키는 정상적으로 계속해야합니다.

+0

'return undefined'는 기존 코드에 더 부합 할 것입니다. –

+0

@ T.J.Crowder js의 모든 함수가 기본적으로 undefined를 반환한다고 생각했습니다. 내가 틀렸다면 나를 바로 잡아주세요. –

+0

@Yoda : 정확하고 정확합니다. 명세는 함수 호출의 여러 "결과"(throw, 반환 값 또는 반환 값 없음)를 실제로 구별합니다. 그러나 그것은 단지 스펙 일뿐입니다. 왜냐하면 항상 포기하지 않는 호출 표현식 (함수에 대한 실제 호출)의 결과는 결과를 가지며 함수가 특정 무언가를 리턴하지 않으면 그 결과는 '정의되지 않음'이기 때문입니다. –

3

이 시도 :

 
document.getElementById('search_field').onkeypress = function(e) { 
    if (!e) { 
    e = window.event; 
    } 
    var keyCode = e.keyCode || e.which; 
    if (keyCode == '13') { 
    window.location.href = '/search/?s=' + $('#search_field').val(); 
    return false; 
    } 
    return true; 
}; 

난 당신이 순수 자바 스크립트와 JQuery와 모두

그래서 오히려 선택하는 것입니다 사용할 수 없습니다 생각 ... 더 JAVASCRIPT

  • 사이 :
     
        document.getElementById('search_field').onkeypress = function(e) { 
         if (!e) e = window.event; 
         var keyCode = e.keyCode || e.which; 
         if (keyCode == '13') { 
          window.location.href = '/search/?s=' + document.getElementById('search_field').value; 
          return false; 
         } 
         return true; 
        }; 
    
  • JQUERY
     
        $("#search_field").keypress(function(event) { 
        if (event.which == 13) { 
         event.preventDefault(); 
         window.location.href = '/search/?s=' + $(this).val(); 
         return false; 
        } 
        return true; 
        }); 
    
+2

항상 false를 반환하면 텍스트 상자가 다른 키 누르기에 대해 업데이트되지 않습니다. 그는 onEnter를 리디렉션하려고하므로 Enter 키 누르기 만 false를 반환해야합니다. – Kristof

+0

@Kristof 문제가 너무 명확하지 않다 ... 우리는 함수가 항상 뭔가를 반환하지 않는다는 것을 알기 때문에 ... 그는 텍스트 상자에 관해서 이야기하지 않는다, 그렇지? ! – Manu

+0

그는 search_field라는 요소의 onkeypress에 함수를 바인딩하고 있습니다. 검색 필드가 실제로 사용자가 검색 값을 입력 할 수있는 검색 필드라고 가정하는 것이 안전하다고 말하고 싶습니다. 그런 다음 Enter 키를 누를 수 있습니다. – Kristof

0

당신의 도구를 무시하십시오. 이벤트 처리기는 모든 경우에 값을 반환 할 필요는 없으며 특정 경로 만 return false 일 경우 문제가 없습니다.