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

标签 javascript html ajax onkeypress

我正在从事一个以学习为目标的项目,到目前为止我正在避免使用 jQuery 以尽可能多地学习 JavaScript。我已经成功地使用 onkeypress 来确定是否在文本框或文本区域中输入了输入,但是在我的网站上添加了一个搜索栏之后,我发现像 onkeypress 这样的事件是全局的(即在搜索栏中输入输入激活我的'发送消息的文本区域)。

我也在使用 AJAX,因此我不需要简单的表单提交。我也希望使用文本区域,因为我在多行之后(以便可以看到更多文本)。

在这些约束下,不使用 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;
    }   
}

而函数是NotEnter():

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

更新

您想避免内联事件处理程序。 Google addEventListener() (您还将了解为什么我们需要 attachEvent() 用于 < IE9)。

此外,您通常不希望将函数命名为否定某物,例如您的示例 isNotEnter()。您应该翻转它的函数并将其命名为 isEnter(),这样您就可以使用否定运算符来表示 is not enter,例如! isEnter().

关于javascript - 通过在没有 jQuery 全局事件的文本框中输入来调用 JavaScript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5545682/

相关文章:

javascript - 如何从 JavaScript 中的现有数组重建数组?

html - 如果Delphi不能提供程序集,如何为Delphi构建SandcaSTLe Microsoft Help 2.0文档?

HTML 容器超出窗口高度

php - 动态引用不同目录和子目录中所有 PHP 页面的页眉和页脚

javascript - 无法使用ajax添加评论

javascript - 如何在输入时从 html 表单输入框中获取值?

javascript - 将 HTML DOM 元素转换为 JavaScript 对象?

javascript - 三个JS创建3D block 开始位置结束位置

javascript - 使用react-csv进行API调用

ajax - 如何从 json 结果中获取这个值?