Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于keypress jquery问题_Jquery_Keypress - Fatal编程技术网

关于keypress jquery问题

关于keypress jquery问题,jquery,keypress,Jquery,Keypress,当用户在表单中输入某个字母组合时,我试图使一个小示例下拉列表出现。我想我有语法/逻辑问题,因为我甚至不能让警报工作 $(document).ready(function () { $("#inputt").keypress( function(event) { if (event.which == melee || MELEE) { alert("You typed MELEE"); } else if (event

当用户在表单中输入某个字母组合时,我试图使一个小示例下拉列表出现。我想我有语法/逻辑问题,因为我甚至不能让警报工作

$(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();

        }

   });

});
这是样品。

所以您的代码中有错误,因为没有这样的事件。如果您看到开发人员模式的控制台,您可以看到错误。因此,它必须使用
$(“#input”).val()
与值“近战”来比较textbox的值。它会成功的

 if (event.which == melee || MELEE) {
必须由

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

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


编辑:-另外,您正在使用的事件是按键,因此,如果您编写的文本大于近战,并键入另一个字符,则将触发该事件。最好使用按键事件,按键后释放任何按键时都会触发该事件。

您的代码存在一些问题

  • 您的代码抛出错误
    未定义近战
    。 你在寻找一个字符串值,所以近战需要加引号
  • 返回整数,而不是字符串
  • 我不完全确定你想把你的活动和按键联系起来。。。 因为这意味着它每按一次键都会运行。如果你在看 对于特定单词,您可能希望绑定到更改事件 相反或者,至少在每次按键时都要消除警报,因为这很烦人。在我的示例中,我使用的是
    change
    ,这要求用户在键入单词后按enter键
  • 如果有人输入近战怎么办?您的代码只查找单词的两个实例,但您可能还需要考虑很多其他实例。处理这个问题的一种方法是将值放在小写,然后只需与近战进行比较


您还没有在任何地方定义
近战
近战
指节
指节
变量…?如果您在运行小提琴时查看浏览器控制台,您至少可以看到部分问题<代码>未捕获引用错误:未定义近战事件。该事件将返回一个整数,表示按下的键,可以找到该键。。。您无法找到使用此选项键入的单词。您是否试图检测用户是否键入了字符串“近战”?您需要获取文本字段的内容并使用字符串比较。或者更好的方法是,
if($(“#input”).val().toLower()==‘近战’)
更新了JSFIDLE…另外,您正在使用的事件是按键,因此,如果您编写的文本大于近战,并键入另一个字符,则会触发该事件。如果您只想模拟演示的ajax响应,则会触发该事件。我想要两个单独的下拉列表,两个显示取决于用户键入wither melee或knuck,但不是每个字符我不清楚键入如何模拟ajax响应(我需要了解您是如何进行调用的),但我的回答显示了如何绑定到textbox更改事件,这意味着只有当用户在关注文本框后按enter键时才会触发。您可以交替地创建一个按钮并绑定到按钮上的单击事件,以检测用户何时完成键入并准备提交他们的单词。非常感谢。这很有效。有没有一种方法可以让它在我完成键入后显示或隐藏,而不是单击关闭?@riotgear-我想你可以在keyup事件上添加一个计时器。差不多吧,我刚刚读了一遍。我对实现和语法很粗糙。有没有办法让我在某处看到一个正在工作的JSFIDLE?我会寻找什么?
else if ($("#inputt").val() == 'knuckle' || $("#inputt").val() ==KNUCKLE) 
   $("#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();

        }

   });