关于按键jquery问题

时间:2015-12-21 17:27:08

标签: jquery keypress

当用户在表单中输入特定的字母组合时,我会尝试显示一个小样本下拉列表。我认为我遇到了语法/逻辑问题,因为我甚至无法使警报工作。

$(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 个答案:

答案 0 :(得分:1)

因此,您的代码中存在错误,因为没有此类事件。如果您看到开发人员模式的控制台,则可以看到错误。因此,必须使用$("#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/

编辑: - 您正在使用的事件是按键,因此如果您编写的文字大于近战并键入另一个角色,则会触发它然后会被触发。如果你使用keyup事件会更好,这是在按下后释放任何键时触发的。

答案 1 :(得分:1)

您的代码存在一些问题。

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

        }

   });