2013-09-30 113 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')。val() –

+0

它純粹的js代碼無論您使用的是什麼工具,它都會顯示您在很多JavaScript代碼中遇到問題。 :-) –

回答

1

末與return true.

你的函數如果任何其他鍵,然後13按下流量應該只是繼續正常。

+0

'return undefined'會更符合現有的代碼。 –

+0

@ T.J.Crowder我認爲js中的所有函數默認返回undefined。如果我錯了,請糾正我。 –

+0

@Yoda:這是*有效*正確。規範實際上區分函數調用的多個「結果」:拋出,返回值或無返回值。但它只是一個規範的事情,因爲調用表達式(對函數的實際調用)的結果總是有結果,如果該函數沒有返回特定的結果,則結果爲「未定義」。 –

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; 
}; 

更多...我認爲你不能同時使用純JavaScript和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,只有回車鍵應該返回false。 – Kristof

+0

@Kristof問題不是很清楚......我們只知道函數不會總是返回一些東西......他不會談論任何文本框,是嗎? ! – Manu

+0

他沒有,但是他綁定了一個名爲search_field的元素的onkeypress函數。我認爲假設搜索字段實際上是一個搜索字段是安全的,用戶可以在其中輸入搜索值,然後他們可以按回車,否? – Kristof

0

忽略您的工具。事件處理程序不必在任何情況下都返回值,如果只有特定路徑return false,則沒關係。

相關問題