我正在从事一个以学习为目标的项目,到目前为止我正在避免使用 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/