使用相同的类捕获输入's上的键码

Capture keycode on input's with same class

本文关键字:键码 输入      更新时间:2023-09-26

我有一个有许多文本输入的页面。由于许多原因,所有的输入都共享同一个类。

现在我试图捕获一个ESC按钮时,输入是集中和警报,如果输入有值或没有。

这在逻辑上只适用于第一个字段。在第一个字段之后,由于所有输入的共享相同的类,当我按ESC按钮时,它会给你第一个输入的值。

那么我怎么能说我正在谈论第二个,第五个或任何我按下ESC的输入呢?

下面是一个例子:http://jsfiddle.net/Y5e9W/

第一个输入工作正常,第二个输入思考;当你按ESC键时,它会给你第一个的值。

您应该能够将keyup事件绑定到类的元素,而不是document。那么this将指向焦点元素:

$(".gp").keyup(function(e) {
    if(e.which === 27) {
        if(this.value.length > 0) {
            //Has a value!
        }
        else {
            //Empty!
        }
    }
});

这是一个更新的小提琴。注意,我使用了事件对象的which属性,jQuery公开了该属性来处理keyCodecharCode之间的浏览器差异。

基于注释更新

如果您确实需要在document级别处理此问题,您可以使用has方法将.gp元素的选择范围缩小到具有焦点的元素:

if (gj.has(":focus").val() != 0) { //...

你可以做-

$(".gp").keyup(function (e) {
     if ($(this).is(":focus") && (e.keyCode == 27)) {
         if ($(this).val() != 0){
             alert('full');
               $(this).val('');
         }else{
             alert('empty');}
    }
});

它将只响应具有'gp'类的元素的keyup事件,然后您可以使用this访问相关元素。

Demo - http://jsfiddle.net/uqS72/2/