2013-09-30 61 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,则没关系。

相关问题