2015-12-21 37 views
0

我想使一個小樣本下拉菜單出現時,用戶在窗體中輸入一定的字母組合。我想我有語法/邏輯問題,因爲我甚至無法使警報生效。按鍵jquery問題

$(document).ready(function() { 

    $("#inputt").keypress(

    function(event) { 

     if (event.which == melee || MELEE) { 

      alert("You typed MELEE"); 

     } else if (event.which == knuckle || KNUCKLE) { 

      alert("You typed KNUCKLE"); 

     } else { 

      alert("Neither!!!"); 
      $('.knuckle').hide(); 
      $('.melee').hide(); 

     } 

    }); 

}); 

下面是示例。 https://jsfiddle.net/galnova/snp1hqr7/1/

+2

您還沒有定義'melee','MELEE','knuckle'或'KNUCKLE'變量的任何地方......? –

+0

如果您在運行小提琴的過程中查看瀏覽器的控制檯,至少可以看到部分問題......未捕獲的ReferenceError:近戰未定義# –

+0

event.which將返回一個整數,表示已按下的鍵,被發現http://www.asciitable.com/ ...你無法找到單獨使用這個鍵入的單詞 –

回答

1

所以,你的代碼有錯誤,因爲沒有這樣的事件。如果你看到你的開發者模式控制檯,你可以看到錯誤。所以它必須通過使用$("#inputt").val()與「近戰」值來比較文本框的值。它會做的伎倆

if (event.which == melee || MELEE) { 

必須

if ($("#inputt").val() == 'melee'|| $("#inputt").val() =='MELEE') { 

,並隨後被替換爲

else if (event.which == knuckle || KNUCKLE) 

else if ($("#inputt").val() == 'knuckle' || $("#inputt").val() ==KNUCKLE) 

https://jsfiddle.net/aadi/2odkq3t8/

編輯: - 另外你正在使用的事件是keypress所以如果你寫的文字大於近戰並輸入另一個字母,它就會被解僱。如果使用在按下後釋放任何按鍵時觸發的按鍵事件會更好。

+0

甚至更​​好,'if($(「#inputt」)。val()。toLower()=='melee')' – Draco18s

+0

https://jsfiddle.net/galnova/snp1hqr7/7/我更新了它仍然沒有工作。 – riotgear

+0

已更新jsfiddle ...另外,您正在使用的事件是按鍵,因此如果您寫入的文字大於近戰並鍵入另一個字母,那麼它將被觸發。 – Naruto

1

你的代碼有幾個問題。

  • 您的代碼拋出錯誤melee is not defined。 你正在尋找一個字符串值,所以近戰需要在引號。
  • event.which返回一個整數,而不是一個字符串。
  • 我不完全確定你想要將你的活動與按鍵綁定... 因爲這意味着它會在每次擊鍵時運行。如果您正在爲特定單詞查找 ,則可能需要改爲綁定到更改事件 。或者,至少,在每個按鍵上擺脫警報,因爲它很煩人。在我的示例中,我使用的是change,它要求用戶在鍵入單詞後按Enter鍵。
  • 如果有人類型Melee怎麼辦?你的代碼只是尋找這個詞的兩個實例,但還有很多你可能想要考慮的其他實例。處理這種情況的一種方法是將數值設爲小寫,然後您只需要與melee進行比較。

Here is an updated fiddle

$("#inputt").change(

    function() { 

     if ($(this).val().toLowerCase() === "melee") { 

      alert("You typed MELEE"); 

     } else if ($(this).val().toLowerCase() === "knuckle") { 

      alert("You typed KNUCKLE"); 

     } else { 

      alert("Neither!!!"); 
      $('.knuckle').hide(); 
      $('.melee').hide(); 

     } 

    }); 
+0

我只是想模擬演示的ajax響應。我想要兩個單獨的下拉菜單,這取決於用戶輸入枯萎近戰或knuck而不是每個字符 – riotgear

+1

我不清楚打字是如何模擬您的ajax響應的(我需要看看您是如何進行呼叫的),但我的答案展示瞭如何綁定到文本框更改事件,這意味着只有當用戶在關注文本框之後按下Enter鍵時纔會觸發該事件。您可以交替地創建一個按鈕並與按鈕上的點擊事件綁定,以檢測用戶何時完成鍵入並準備提交他們的單詞。 –

+0

https://jsfiddle.net/galnova/5jy7d43u/2/謝謝。這工作。有沒有辦法讓它顯示或隱藏一旦我完成打字而不是點擊它? – riotgear