如何处理默认按钮的按键?

时间:2014-02-07 19:12:25

标签: javascript jquery asp.net

我以为我不会点击我的默认按钮(在我的asp.net母版页上),检查输入是否被按下并处理它。基本上当用户在任何输入类型字段上并且他们点击输入时,它实际上将在我的表单上执行我的默认按钮的事件(如上所述,它是我的母版页上允许全局搜索的按钮)。

所以用户就像嘿等一下我在输入字段上按下回车键为什么我突然在搜索结果页面上......我不会责怪他们......

我以为我会用这个处理它:

    $(document).keypress(function (e) {
        if (e.which == 13) {
            return false;
        }
    });

问题不再发生了,我很高兴......直到我发现我的所有按钮,例如我的jquery对话框,当你选中它们并按下回车键时不再执行...我看到了之所以因为我回归假。但是我应该如何构建这个如果你专注于一个例如asp.net按钮就不会发生这种情况呢?

2 个答案:

答案 0 :(得分:1)

你应该只处理文本框

$('input[type=text]').keypress(function (e) {
    if (e.which == 13) {
        return false;
    }
});

修改

根据评论,我可以在我的site.master页面中添加此内容,但忽略一个特定的文本框

排除文字字段

$('input[type=text]').not('.search').keypress(function (e) {
    if (e.which == 13) {
        return false;
    }
});

这里我添加了demonstration,在最后一个文本框(搜索)事件中没有关联。

使用事件委派方法

$(document).on('keypress', 'input[type=text]:not(.search)', function (e) {
    if (e.which == 13) {
        alert('Enter pressed')
    }
});

DEMO

答案 1 :(得分:0)

您甚至需要绑定到页面上的确切元素:

$('.aspNetButton').on('keypress', (function (e) {
    if (e.which == 13) {
        return false;
    }
});