2012-11-22 48 views
3

我做了一個jQuery自動完成搜索來搜索我的CI應用程序中的頁面,返回的JSON數據包括2個元素,頁面的「slug」和頁面的「名稱」因此即時通訊使用「名」,以顯示自動完成列表中,當有人選擇的結果,或者按Enter鍵它採用塞重定向他到該頁面:jQuery自動完成在Firefox中輸入按鍵動作無法正常工作

$(function() { 
    $("#search").autocomplete({ 
     source: "index.php/pages/get_pages", 
     minLength: 2, 
     select: function(event, ui) { 
      $(event.target).val(ui.item.value); 
      window.location.href = "index.php/pages/" + ui.item.slug; 
      return false; 
     } 
    }); 

    $("#search").keypress(function(e){ 
     if (e.which == 13) { 
      window.location.href = "index.php/pages/no-results"; 
      return false; 
     } 
    }); 
}); 

現在我增加了一個選項,當有人類型的關鍵字並沒有找到結果,然後他按下輸入它應該去「頁」沒有結果參數。

此代碼在除Firefox以外的所有瀏覽器上都可以正常工作,它在所有情況下都進入無結果頁面。

我需要它去沒有結果頁面,只有當沒有結果被發現,用戶輸入隨機頁面名稱,然後按下輸入。

回答

2

我認爲這是關於轉發問題。當按下「Enter」按鈕時,按鍵'和自動完成選擇的功能都被調用。我們應該插入一個if邏輯來執行其中的一個。

順便說一下,我認爲在服務器端做轉發操作是非常合乎邏輯的。

$(function() { 
    var isSelected = false; 
    $("#search").autocomplete({ 
     source: "index.php/pages/get_pages", 
     minLength: 2, 
     select: function(event, ui) { 
      isSelected = true; 
      $(event.target).val(ui.item.value); 
      window.location.href = "index.php/pages/" + ui.item.slug; 
      return false; 
     } 
    }); 

    $("#search").keypress(function(e){ 
     if (e.which == 13) { 
      if(!isSelected) 
      { 
       window.location.href = "index.php/pages/no-results"; 
      } 
      return false; 
     } 
    }); 
}); 
+0

非常感謝穆罕默德,這是有道理的,它的工作。 –

相關問題