我有一个包含多个文本输入的页面,我想确定用户输入的文本输入中的哪一个。所有文本输入都使用相同的代码显示。一个很大的限制是我无法修改实际的HTML代码,所以我无法在输入中添加ID或类。
这是HTML的样子:
<input type="text" />
<input type="text" />
<input type="text" />
<input type="text" />
以下是我用来检测按键的代码:
$(document).keypress(function(e) {
console.log(e.target) // will be the same for each input
});
有没有办法区分不同的输入。是否存在区分文本输入的底层DOM属性,以便我可以在将来的常量时间内访问输入(即,DOM是否为每个输入分配了唯一的ID)?
答案 0 :(得分:1)
在文档加载时,您可以遍历输入元素并创建“index”=&gt; “元素”地图。这可以用于将来的恒定时间访问。地图索引可以作为元素的唯一ID。
我为此做了一个工作小提琴。 http://jsfiddle.net/fugHv/6/。这会解决您的问题吗?
这是方法的要点,
$(document).ready(function(){
var inputMap = {}, inputArray = [];
$.each($('input'), function(i, v){
//Make an array of the inputs to ensure a constant time access
inputArray.push(v);
//Make a map of inputs with index as the key, for future use
inputMap[i] = v;
});
$('input').keypress(function(e){
var pos = inputArray.indexOf(e.target);
//This should provide the reference for the target input
var inputRef = $(inputMap[pos]);
...
});
});
答案 1 :(得分:1)
您可以使用jQuery索引方法唯一标识输入:
$(document).keypress(function(e) {
console.log(e.target) // will be the same for each input
console.log($(e.target).index());
});