2012-07-26 61 views
0

我有一個輸入表單的onblur和聚焦狀態後的JavaScript問題

<input id="txtSearch" class="txtSearch" name="SearchPhraseText" type="text"http value="<%= ServiceSite.Resources.Resources.SITEMATER_ENTER_SEARCH_TERM %>" onfocus="handleSearchFocus(this)" onblur="handleSearchBlur(this)" onkeypress="if (event.keyCode == 13) {search();}"/> 

當我以下內容添加到$(文件)。就緒在我的JavaScript ..

if (window.location.search.indexOf("search") != -1){ 
    $('#txtSearch').val("<%= Session["SearchPhrase"] %>"v); 
} 

因爲我有這個在我的其他地方javascript

 function handleSearchFocus(searchBox) { 

     if ($(searchBox).val() == "<%= ServiceSite.Resources.Resources.SITEMATER_ENTER_SEARCH_TERM%>") { 
      $(searchBox).val(""); 
      $(searchBox).css("color", "black"); 
     } 

    } 

    function handleSearchBlur(searchBox) { 
     if ($(searchBox).val() == "") { 
      $(searchBox).css("color", "gray"); 
      $(searchBox).val("<%= ServiceSite.Resources.Resources.SITEMATER_ENTER_SEARCH_TERM%>"); //should reference config file 
     } 

    } 

這兩個函數用於處理焦點和模糊不再工作。當我點擊輸入框或點擊離開時,它們不會運行。我想要做的是如果有一個應該顯示的搜索值,顯示它。如果不是,則遵循上述模糊/聚焦功能中的邏輯。

+0

任何Javascript錯誤?你是否確認函數完全沒有執行,而不是因爲沒有滿足'if'條件而沒有做任何事情? – 2012-07-26 22:12:25

+1

您是否收到任何錯誤?你在輸入標籤中有'type =「text」http',這可能不會導致問題,但是不正確。你也在'$('#txtSearch')。val(「<%= Session [」SearchPhrase「]%>」v);'中有一個零散的「v」;',我猜可能是錯字或複製/粘貼錯誤,但如果它在您的代碼中,則會導致問題。 – MrOBrian 2012-07-26 22:13:49

+0

一個附註:考慮將searchBox作爲jQuery對象進行緩存。 EX:var $ searchBox = $(searchBox)那麼你不必另外調用主jQuery函數2次。 – jholloman 2012-07-26 22:14:13

回答

1

我試圖把你的代碼中的jsfiddle here並得到了在開發者工具控制檯以下錯誤:

Uncaught ReferenceError: handleSearchFocus is not defined

Uncaught ReferenceError: handleSearchBlur is not defined

注意,我設置的jsfiddle運行腳本onLoad,這就是我假設你」重新做你的代碼。

通常,您將運行代碼onLoad,因爲您需要完成加載才能操作和抓取頁面上的元素。在你的情況下,你需要相反的事情發生。您的元素是通過與您的功能綁定的onfocusonblur事件創建的。但是,這些功能還不存在,所以他們不能被解僱。請注意,如果您將jsFiddle onLoad更改爲no wrap (body),您的功能就會起作用。

換句話說,元素試圖找到功能之前,他們可用

您需要可以把你的功能<script>標籤體內(元素後),或將其附加到事件中的$(document).ready代碼,就像這樣:

$('#txtSearch').focus(function() { 
    // code here 
}); 
$('#txtSearch').blur(handleSearchBlur); 
0

MrOBrian抓到導致錯誤這在問題的評論中。