找出哪个ASP.NET控件触发了我的JavaScript事件?

时间:2012-02-03 12:06:10

标签: javascript asp.net events onkeypress capslock

我创建了一个JavaScript函数,该函数触发文本框的OnKeyPress事件。 基本上,当调用该函数时,会显示一个标签,告诉用户已启用大写锁定。正如您从下面的方法中看到的,如果Caps Lock打开,则会显示3个标签,但我想使用传入的参数来找出触发事件的文本框,以便我只显示其中一个大写锁定标签。任何想法

我的JScript函数位于下面,其中一个调用文本框位于:

    function capLock(e) {
        kc = e.keyCode ? e.keyCode : e.which;
        sk = e.shiftKey ? e.shiftKey : ((kc == 16) ? true : false);
        if (((kc >= 65 && kc <= 90) && !sk) || ((kc >= 97 && kc <= 122) && sk))
            document.getElementById('divCurrentPasswordCapsLockStatus').style.visibility = 'visible';
            document.getElementById('divNewPasswordCapsLockStatus').style.visibility = 'visible';
            document.getElementById('divConfirmPasswordCapsLockStatus').style.visibility = 'visible';
        else
            document.getElementById('divCurrentPasswordCapsLockStatus').style.visibility = 'hidden';
            document.getElementById('divNewPasswordCapsLockStatus').style.visibility = 'hidden';
            document.getElementById('divConfirmPasswordCapsLockStatus').style.visibility = 'hidden';
    } 

<asp:TextBox ID="txtCurrentPassword" runat="server" TextMode="Password" CssClass="customtxt" onkeypress="capLock(event)"></asp:TextBox>

所以我想使用JScript函数执行以下操作:

if (e.name=="txtCurrentPassword") 
{
    document.getElementById('divCurrentPasswordCapsLockStatus').style.visibility ='visible';
}
else 
{ 
    document.getElementById('divNewPasswordCapsLockStatus').style.visibility = 'hidden';
    document.getElementById('divConfirmPasswordCapsLockStatus').style.visibility = 'hidden';
}

我正在使用ASP.Net 4.0

由于

1 个答案:

答案 0 :(得分:1)

好的,你需要使用

ClientIdMode="Static"

查看模式http://weblogs.asp.net/scottgu/archive/2010/03/30/cleaner-html-markup-with-asp-net-4-web-forms-client-ids-vs-2010-and-net-4-0-series.aspx

的详细信息

当你在页面中指定ID时,它会发出ID,而不是命名容器尝试并将它们放入。

然后你可以将'this'传递给你的函数吗?例如

onkeypress="capLock(this, event)" 

并将您的功能更改为

function capLock(sender, e) {