0

我在 JavaScript 中有大约 10 到 12 个函数。在这些函数使用的控制、获取、聚焦和其他函数时,我想调用其中的 2 或 3 个。

我拥有虚拟键盘的所有这些功能......我想在母版页上添加虚拟键盘(我已经使用 HTML 表单在 JavaScript 中创建了虚拟键盘)。

我已经将该代码添加到母版页中并且我的键盘正在工作,但它仅适用于简单的 HTML 控件(即,没有 runat="server" 属性)。当我添加 runat="server" 时它不起作用。

我不知道如何从内容或子页面调用此函数。

我的代码如下:--(我在母版页中添加的 JavaScript 代码......这是代码的一部分(不完整))

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage2.master.cs" Inherits="MasterPage2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
    <script language="javascript" type="text/javascript">

        function setId(el) {
            id = el;
            //alert(el);
            document.getElementById(id).focus();
            reset();
            return 0;
        }  

        function restoreCode(evt) {
            ButtonUp(kcode);
        }

        function writeKeyPressed(evt) {
            InsertChar('k', kcode);

            return false;
        };

        function InsertChar(mode, c) {
            document.getElementById(id).focus();
        }

        function ButtonDown(c) {
            reset();
        }

        function ButtonUp(c) {
            //codes
            resets();
        }

        function Shift() {
            //codes
        }
    </script>

当我从 HTML 控件的内容页面调用它时,它在代码中没有runat="server"属性,那么它将起作用。

 <input id="txt_pwd" type="password" onfocus="setId('txt_pwd');" />

当我从内容页面(即runat="server"代码中具有属性的 ASP 控件)调用它时,它将不起作用。

<input id="txt_pwd" type="password" onfocus="setId('txt_pwd');" runat="server" />

请任何人告诉我一个解决方案,我将使用来自内容页面的服务器端控件调用我的函数(在母版页上)。

4

1 回答 1

1

使用时它不起作用,runat="server"因为 .NET 更改了控件的 ID。因此,在这种runat="server"情况下,您的 JavaScript 正在寻找错误的 id。解决它的一种方法是告诉 .NET 不要使用ClientIDMode更改 ID 。

<input id="txt_pwd" type="password" clientidmode="Static" onfocus="setId('txt_pwd');" runat="server" />

如果您不使用静态模式,还有其他方法可以获取生成的 ClientID,因为您不想在转发器中使用它,或者如果 ID 有可能重复。在这种情况下,您可以使用 .ClientID,如下所示:

document.getElementById('<%= txt_pwd.ClientID %>');

读取 ClientID

一种更简单的方法可能是使用onfocus="setId(this);"然后

function setId(el) {
    id = el.id;
于 2013-03-27T13:59:25.430 回答