2013-05-10 48 views
0

您可以在現場目標類型/酒店 網址:http://think.thinkhotels.com/自動完成問題鍍鉻

它會自動提示你。功能工作正常。但是當您按左/右箭頭鍵時,光標會像平常一樣在所有瀏覽器左右移動,除了鉻

我試圖在http://think.thinkhotels.com/autofill/jquery.autocomplete.js

修改代碼,它有

$input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) { 
     // a keypress means the input has focus 
     // avoids issue where input had focus before the autocomplete was applied 
     hasFocus = 1; 
     // track last key pressed 

     lastKeyPressCode = event.keyCode; 
     switch(event.keyCode) { 

      case KEY.UP: 
       event.preventDefault(); 
       if (select.visible()) { 
        select.prev(); 
       } else { 
        onChange(0, true); 
       } 
       break; 

我加了幾行代碼,以便它避免了在左邊的任何行動以下/右箭頭是修改後的代碼

$input.bind(($.browser.opera ? "keypress" : "keydown") + ".autocomplete", function(event) { 
     // a keypress means the input has focus 
     // avoids issue where input had focus before the autocomplete was applied 
     hasFocus = 1; 
     // track last key pressed 

     if(event.which ==KEY.LEFT || event.which == KEY.RIGHT) { 
     return true; 
     } 

     lastKeyPressCode = event.keyCode; 
     switch(event.keyCode) { 

      case KEY.UP: 
       event.preventDefault(); 
       if (select.visible()) { 
        select.prev(); 
       } else { 
        onChange(0, true); 
       } 
       break; 

關鍵是如下

var KEY = { 
     UP: 38, 
     DOWN: 40, 
     DEL: 46, 
     TAB: 9, 
     RETURN: 13, 
     ESC: 27, 
     COMMA: 188, 
     PAGEUP: 33, 
     PAGEDOWN: 34, 
     BACKSPACE: 8, 
     LEFT: 37, 
     RIGHT: 39 
    }; 

但問題沒有得到解決。 我試過返回false;此外也沒有奏效。我曾嘗試event.preventDefault(),也沒有奏效。

任何人都可以找到,請

回答

0

jQuery的自動完成是沒有問題的,它處理左,右按鍵本身的解決方案:

case KEY.LEFT: 
case KEY.RIGHT: 
    //Do nothing 
    break; 

問題是你必須輸入這些屬性現場:

onfocus="clearVal(), assignVal();" onchange="javascript: assignVal();" onblur="javascript: assignVal();" onclick="javascript: assignVal();" onkeypress="javascript: assignVal();" onkeyup="javascript: assignVal();"

什麼是所有的呢?當我刪除onkeypressonkeyup屬性它工作正常。這裏是被觸發的功能:

function assignVal() 
{ 
    var n=document.getElementById("city_t").value.split(" ("); 
    document.getElementById("city_t").value = n[0].replace(/\//g,""); 
    document.getElementById("city").value = n[0].replace(/\//g,""); 
    return true; 
} 

這個函數做的是什麼問題 - 你需要弄清楚這是否有必要。如果這被用來「修復」某些東西,那可能是修復它的錯誤方法。

從輸入中刪除函數和所有屬性,它會工作。如果此功能試圖提供的功能由於某種原因需要,那是另一個問題...