Javascript 如何在文本框的按键事件中获取文本框的id

Javascript 如何在文本框的按键事件中获取文本框的id,javascript,asp.net,onkeydown,onkeyup,Javascript,Asp.net,Onkeydown,Onkeyup,我的页面中有一个文本框: <td> <input type="text" id="Approvers1" size="11" onkeydown="AddUsersKeyDown(event)" style="width: 470px;" /> </td> 现在,如果我在文本框中按ctrl k,它必须调用另一个名为AddUsers input parameter的javascript函数-。。其中输入参数应该是文本框的id 如何做到这一点。。我需要textb

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

<td>
<input type="text" id="Approvers1" size="11" onkeydown="AddUsersKeyDown(event)" style="width: 470px;" />
</td>
现在,如果我在文本框中按ctrl k,它必须调用另一个名为AddUsers input parameter的javascript函数-。。其中输入参数应该是文本框的id

如何做到这一点。。我需要textbox的id,或者至少需要DOM对象,以便从DOM对象访问textbox的id

请帮助我实现这两件事之一。

使用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);
    }
}
使用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);
    }
}

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

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

下面是一个JSFIDLE:

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

 <input type="text" id="Approvers1" size="11" onkeydown="AddUsersKeyDown(event)" style="width: 470px;" />
下面是一个JSIDLE:

您可以:

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

    if (evtobj.keyCode == 75 && evtobj.ctrlKey) {
       AddUsers(target.id);
    }
}
您的函数名不匹配顺便说一句,您可以:

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

    if (evtobj.keyCode == 75 && evtobj.ctrlKey) {
       AddUsers(target.id);
    }
}
顺便说一句,你的函数名不匹配 这里

然后取下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>
可能有很多代码,但是你可以确定它是跨浏览器的 获取 这里

然后取下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>
可能有很多代码,但是你可以确定它是跨浏览器的

获取IE8中target.id中的脚本错误。。。在chrome和firefox中,其工作方式没有更新,只有示例..:现在看看!谢谢你工作得很好。。。但是我的文本框中输入了“k”。。。如何防止…添加一个返回错误;在添加用户之后,我更新了fiddle和example.getting脚本错误,在IE8的target.id中。。。在chrome和firefox中,其工作方式没有更新,只有示例..:现在看看!谢谢你工作得很好。。。但是我的文本框中输入了“k”。。。如何防止…添加一个返回错误;在添加用户之后,我已经更新了提琴和示例。效果很好。。。但是我的文本框里输入了“k”。。。如何避免…我只在按下ctrl k键时调用AddUsers函数。。。所以k被附加在textboxUse evtobj.stopPropagation中;调用函数Getting script error as Object不支持evtobj.stopPropagation行的此属性或方法后停止进一步传播;在IE8中…工作正常。。。但是我的文本框里输入了“k”。。。如何避免…我只在按下ctrl k键时调用AddUsers函数。。。所以k被附加在textboxUse evtobj.stopPropagation中;调用函数Getting script error as Object不支持evtobj.stopPropagation行的此属性或方法后停止进一步传播;在IE8中。。。