我有一个包含许多文本输入的页面。由于种种原因,所有输入都属于同一类。
现在我正在尝试在输入聚焦时捕获ESC按钮,并在输入有值时发出警告。
现在,这在逻辑上仅适用于第一个字段。在第一个字段之后,由于所有输入都共享同一个类,当我按下ESC按钮时,它会给出第一个输入的值。
那么我怎么能说我正在谈论第二,第五或任何我正在按ESC的输入。
以下是一个示例:http://jsfiddle.net/Y5e9W/
第一个输入工作正常,第二个输入思想;当你按下ESC时,它会给你第一个的值。
答案 0 :(得分:3)
您应该能够将keyup
事件与您的类绑定到元素,而不是document
。然后this
将引用具有焦点的元素:
$(".gp").keyup(function(e) {
if(e.which === 27) {
if(this.value.length > 0) {
//Has a value!
}
else {
//Empty!
}
}
});
这是一个updated fiddle。请注意,我使用了事件对象的which
属性,jQuery公开该属性来处理keyCode
和charCode
之间的浏览器差异。
更新
如果您确实需要在document
级别处理此问题,则可以使用has
方法将您选择的.gp
元素缩小到具有焦点的元素:
if (gj.has(":focus").val() != 0) { //...
答案 1 :(得分: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
来访问相关元素。