0

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

我的 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

谢谢

4

1 回答 1

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,而不是在命名容器尝试并将它们放置时发出。

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

onkeypress="capLock(this, event)" 

并将您的功能更改为

function capLock(sender, e) {
于 2012-02-03T13:00:17.003 回答