如何在该文本框的keydown事件上获取文本框的id

时间:2013-04-25 12:58:54

标签: javascript asp.net onkeydown onkeyup

我的页面中有一个文本框:

<td>
<input type="text" id="Approvers1" size="11" onkeydown="AddUsersKeyDown(event)" style="width: 470px;" />
</td>

这是我的js功能:

function AddUsersKeyDown(evtobj) {

    if (evtobj.keyCode == 75 && evtobj.ctrlKey) {

        AddUsers(--input parameter--);
    }
}

现在如果我在文本框中按ctrl k,它必须调用另一个名为AddUsers的javascript函数( - 输入参数 - )..其中输入参数应该是文本框的id ..

如何实现这一点..要么我需要文本框的id或至少DOM对象,以便我可以从DOM对象访问文本框的id ..

请帮助我实现这两件事中的任何一件......

4 个答案:

答案 0 :(得分:4)

首先,您应该将函数重命名为AddUsersKeyDown,以便触发keydown事件。在事件对象上,有一个target属性,它具有触发DOM元素。您可以使用该信息来获取ID。

 <input type="text" id="Approvers1" size="11" onkeydown="AddUsersKeyDown(event)" style="width: 470px;" />

和Javascript:

function AddUsersKeyDown(evtobj) {

    var target = evtobj.target || evtobj.srcElement;

    if (evtobj.keyCode == 75 && evtobj.ctrlKey) {
        AddUsers(target.id);

        return false;
    }
}

这是一个jsfiddle:http://jsfiddle.net/q26Nv/3/

答案 1 :(得分:2)

使用this获取DOM元素或使用this.id获取元素的ID

<td>
<input type="text" id="Approvers1" size="11" onkeydown="AddUsersKeyDown(event,this.id)" style="width: 470px;" />
</td>

function AddUsersKeyDown(evtobj,id) {

    if (evtobj.keyCode == 75 && evtobj.ctrlKey) {

        AddUsers(id);
    }
}

答案 2 :(得分:0)

你可以:

function AddUserKeyDown(evtobj) {
    evtobj = evtobj || window.event;
    var target = evtobj.target || evtobj.srcElement;

    if (evtobj.keyCode == 75 && evtobj.ctrlKey) {
       AddUsers(target.id);
    }
}

(您的func名称与btw不匹配)

答案 3 :(得分:0)

获取 jquery这里

然后采取onkeydown

<input type="text" id="Approvers1" class="keydown" size="11" style="width: 470px;" />

添加脚本

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script>
$(function() {
    $('.keydown').keydown(function() {
       console.log( $(this).attr('id') );
    });
});
<script>

可能代码很多,但您可以确定它是跨浏览器 documentation