2013-04-21 88 views
0

這是準確報告console.log中文本字段的長度,但它也會在每個keyup上的代碼下面拋出錯誤。有什麼想法嗎?JavaScript長度函數在文本字段上拋出錯誤

$('.search').keyup(function() { 
    var searchTerm = this.value; 
      console.log(this.value.length); 
      if (this.value.length>0){ 
      getSuggestions(searchTerm); 
      }else{ 
       $('#Button').click(); 
      } 
     }) 

而這就是我得到了Chrome的控制檯

Uncaught TypeError: Cannot read property 'length' of undefined pm_functions.js:283 
(anonymous function) pm_functions.js:283 
p.event.dispatch jquery.min.js:2 
g.handle.h 
+2

什麼是元素(S)與類「搜索」的HTML我解決?你能夠確定(在Chrome腳本調試器視圖中)確定這是導致問題的代碼行嗎?如果'console.log()'起作用,後續行會引發異常似乎很奇怪。 – Pointy 2013-04-21 14:42:23

+2

你可能的意思是'$(this)'不'這個' – 2013-04-21 14:44:41

+0

嘗試$(this).val()和/或$(this).text()而不是this.value – 2013-04-21 14:45:12

回答

1

好吧,解決了。謝謝您的幫助。我注意到keyup發射兩次。錯誤正在被拋出第二次。當我仔細查看HTML時,我發現父母也在使用「.search」類。

因此,這裏是使用強ID輸入字段

$('#searchInputField').keyup(function() { 
      var searchTerm = this.value; 
      if (searchTerm.length > 2){ 
      getSuggestions(searchTerm); 
      }else{ 
       $('#Button').click(); 
      } 
     }) 
2

嘗試$(this).val().length

+0

是的,我也試過jquery。同樣的結果。 – frankie 2013-04-21 14:49:35

+0

爲什麼?這導致嘗試訪問未定義的'length'屬性 - 這些語句絕對是等價的(對於大多數輸入類型) – Bergi 2013-04-21 15:01:44

0

更換this.value.length您可以測試的THIS.VALUE值:

$('.search').keyup(function() { 
var searchTerm = this.value; 
     console.log(this.value.length); 
     if ((this.value.length>0) && (searchTerm !== null)){ 
      getSuggestions(searchTerm); 
     } 
     else { 
      $('#Button').click(); 
     } 
    }) 
1

這是一個盲目的答案,因爲你必須分享你的html

$('.search').keyup(function() { 
    var searchTerm = $(this).val(); 
    if (searchTerm && searchTerm.length>0){ 
     getSuggestions(searchTerm); 
    }else{ 
     $('#Button').click(); 
    } 
})