【问题标题】:easy way to add javascript functions in asp.net web site在 asp.net 网站中添加 javascript 函数的简单方法
【发布时间】:2018-04-03 09:29:21
【问题描述】:

我在 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 控件 not 在代码中具有 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" />

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

【问题讨论】:

  • 您需要更多说明才能得到帮助:请包括您如何称呼它的示例。你得到什么错误? “它不起作用”的详细含义是什么?另外,您如何使用没有 runat="server" 的 asp 控件?
  • 请详细说明。
  • @MikeSmithDev ..对不起,它只是没有 runat="server" 的 html 控件......而且它不起作用意味着......当我按下我的虚拟键盘时,键写在文本框上这种情况不会发生这种情况......
  • @CodeRider 我正在使用虚拟键盘...我正在处理两种不同的方式。1 使用 imagemap(html),即用户单击该按钮并将字符写入文本框.. 2 是用户直接在文本框上书写,我将显示相对于该文本框的 uincode……例如……谷歌翻译器提供的印地语(非英语)语言键盘

标签: javascript asp.net master-pages


【解决方案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 %>');

Reading on ClientID

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

function setId(el) {
    id = el.id;

【讨论】:

    猜你喜欢
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    • 2011-11-02
    • 2011-11-18
    • 2011-03-20
    相关资源
    最近更新 更多