关于按键 jquery 问题

on keypress jquery issues

我正在尝试在用户在表单中输入特定字母组合时显示一个小示例下拉列表。我想我遇到了 syntax/logic 问题,因为我什至无法让警报正常工作。

$(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/

所以你的代码有错误,因为没有这样的 event.which,如果你看到开发者模式的控制台,你可以看到错误。所以它必须通过使用 $("#inputt").val() 和值 'melee' 来比较文本框的值。它会成功的

 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 因此,如果您编写的文本大于 melee 并键入另一个字符,它将被触发,然后它将被触发。如果你使用keyup事件会更好,当按下任何键后释放时触发。

您的代码存在一些问题。

  • 您的代码抛出错误 melee is not defined。 您正在寻找一个字符串值,因此 melee 需要用引号引起来。
  • event.which returns 一个整数,不是一个字符串。
  • 我不完全确定你想将你的事件与按键联系起来... 因为这意味着它会在每次击键时运行。如果你正在寻找 对于一个特定的词,你可能想绑定到 change 事件 反而。或者,至少,摆脱每次按键时的警报,因为它很烦人。在我的示例中,我使用的是 change,它要求用户在输入单词后按回车键。
  • 如果有人输入 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();

        }

   });