找出用户输入的输入元素

时间:2013-07-12 00:50:23

标签: javascript jquery

我有一个包含多个文本输入的页面,我想确定用户输入的文本输入中的哪一个。所有文本输入都使用相同的代码显示。一个很大的限制是我无法修改实际的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)?

2 个答案:

答案 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());
});