通过在没有jQuery全局事件的文本框中输入来调用JavaScript函数

我正在开展一个以学习为目标的项目,到目前为止,我正在避免使用jQuery来尽可能多地学习JavaScript。我已成功使用onkeypress来确定是否在文本框或文本区域中输入了输入,但在我的网站上添加搜索栏后,我发现像onkeypress这样的事件是全局的(即点击进入搜索栏会激活我的'发送'消息'textarea)。 我也在使用AJAX,因此我不想要一个简单的表单提交。我也希望使用textarea,因为我经过多行(这样可以看到更多的文本)。 在这些约束下,不使用jQuery这样做是否合理?如果是这样,我该怎么办?网站上的其他答案只是指向jQuery。 谢谢, 模范 编辑:我被问到代码,所以这里是相关的HTML和JavaScript。这是输入之一:
<input type="text" id="search" name="search" onkeypress="return activate(event, this.value);"/>
这是与它一起使用的javascript:
function activate(e, message)
{   
    if (isNotEnter(e))
    {   
        return true;
    }   
    else // ie. enter was pressed
    {   
        // only proceed to search() if message is not empty
        if (message.length >= 1)
        {   
            search();
        }   
        return false;
    }   
}
函数isNotEnter():
function isNotEnter(e)
{   
    if (e.keyCode == 13) 
    {   
        return false;
    }   
    else
    {   
        return true;
    }   
}
    
已邀请:
听起来你正在捕捉
document
上的关键事件,而不是你的输入元素。 所以找到类似
document.onkeypress = function() { ... }
的东西并用
document.getElementById('your-input').onkeypress = function() { ... }
代替。 如果你找不到该代码,你可能正在使用
addEventListener
,所以找到
document.addEventListener('keypress', function() { ... }, false);
更新 您希望避免使用内联事件处理程序。谷歌
addEventListener()
(你也会看到为什么我们需要
attachEvent()
为&lt; IE9)。 此外,您通常不希望将函数命名为否定某些内容,例如你的例子
isNotEnter()
。你应该翻转它的功能并将其称为
isEnter()
,这样你可以使用否定运算符来输入,例如,
! isEnter()
。     
你应该使用jquery,因为它很棒,易于学习,摆脱浏览器问题等。 如果你完全反对它,它可以用纯JS完成。如果您显示代码会有所帮助,但是当您应该将onkeypress事件绑定到输入时,可能会将onkeypress事件绑定到文档。
$("#search").keypress(function()
{
//do function here, use this to refer to the element
});
    

要回复问题请先登录注册