3

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

我也在使用 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;
    }   
}
4

2 回答 2

3

您应该使用 jquery,因为它很棒、易于学习、摆脱了浏览器问题等。

如果你完全反对它,它可以用纯 JS 来完成。如果您显示代码会有所帮助,但是当您应该将 onkeypress 事件绑定到输入时,您可能会将其绑定到文档。

$("#search").keypress(function()
{
//do function here, use this to refer to the element
});
于 2011-04-04T23:57:59.230 回答
3

听起来您正在捕获关键事件document,而不是专门捕获输入元素。

所以找到类似的东西document.onkeypress = function() { ... }并替换为document.getElementById('your-input').onkeypress = function() { ... }.

如果你找不到那个代码,你可能正在使用addEventListener,所以找到document.addEventListener('keypress', function() { ... }, false);

更新

您想避免内联事件处理程序。谷歌addEventListener()(你也会明白为什么我们需要attachEvent()< IE9)。

此外,您通常不想将函数命名为否定某些东西,例如您的 example isNotEnter()。你应该翻转它的函数并调用它isEnter(),这样你就可以使用否定运算符来表示不输入,例如! isEnter()

于 2011-04-04T23:59:55.470 回答