如何识别和存储文本框的更改详细信息,并在 Java 脚本中调用它 asp.net

本文关键字:Java 并在 详细信息 脚本 net asp 调用 识别 何识别 文本 存储 | 更新日期: 2023-09-27 17:55:41

我有一个用户控件,正在页面中调用。伪代码如下主页

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
<%@ Register TagPrefix="test" TagName="newcontrol" Src="~/UserControl.ascx" %>
<!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 runat="server">
    <title></title>
</head>
<body>
<script id="testscript" language="javascript" src="CheckJavaScript.js"> </script>
    <form id="form1" runat="server">
    <div>
        <test:newcontrol ID="testingNewControl" runat="server" />
        <asp:Button ID="btnSave" runat="server" Width="100" OnClientClick="CallingScript()" />
    </div>
    </form>
</body>
</html>

用户控制

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UserControl.ascx.cs"
    Inherits="WebApplication1.UserControl" %>
<div id="usertest" runat="server">
    <table>
        <tr>
            <td>
                <asp:Label ID="label1" Text="Name" runat="server">
                </asp:Label>
                <asp:TextBox ID="text1" runat="server"></asp:TextBox>
            </td>
        </tr>
    </table>
     <table>
        <tr>
            <td>
                <asp:Label ID="label2" Text="City" runat="server">
                </asp:Label>
                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            </td>
        </tr>
    </table>
</div>

我想调用javascript,如果文本框的值有任何变化,当用户点击"保存"按钮时。

如何确定文本框值是否已更改。此外,我在用户控件中只显示两个文本框,而会有很多文本框。我必须将警报显示为"文本框 1 中的值已更改"或"文本框 2 中的值已更改"

我该如何继续。

如何识别和存储文本框的更改详细信息,并在 Java 脚本中调用它 asp.net

对于通用解决方案,您需要一个跟踪旧值的解决方案。解决方案的典型概述是

  1. 有一个隐藏字段来存储要跟踪的控件的旧值。您需要开发一些方案来序列化/反序列化名称/id-值对。它可以像逗号分隔的名称/值对列表一样简单。虽然,你可以考虑JSON。
  2. 在服务器端有一个代码,对于给定的父控件,通过所有子控件递归循环,并将其原始值(以及名称/ID)存储到隐藏字段中。出于性能原因,您可以接受要保存的控件类型(或者根据控件类型跳过控件的逻辑)。
  3. #2 只需要在显示页面时完成,即它应该在回发中发生。但是,当然,您可能会遇到这样一种情况:切换面板的可见性,然后想要从面板跟踪控件。因此,若要处理此类方案,实质上需要为要在页面生命周期中存储的控件创建一个名称-值对字典。您可以注册用于跟踪的控件,也可以取消注册这些控件的跟踪。
  4. 有一个客户端(java脚本)启动代码,该代码将从隐藏字段反序列化,构造名称-值字典并将更改事件处理程序附加到正在监视的控件以检查原始值。
  5. 在服务器端的回发周期中,必须将原始值还原到字典中,以便服务器代码可以注册/取消注册它们。有时,需要重新注册这些值 - 例如,原始值为"A",它已更改为"B"并保存(但 UI 在编辑模式下仍保持打开状态),因此您可能需要将原始值重新注册为"B"。

就我而言,整个解决方案是在基本页面级别打包的。因此,页面开发人员要做的就是翻转标志以指示控件跟踪并通过注册/取消注册来识别控件 - 基本页面将负责构建原始值字典,注册隐藏字段,注入js脚本调用等。

一种方法是每个文本框在页面上都有一个隐藏字段,其中包含原始值,并且隐藏字段的名称类似于文本框。 例如,如果您有一个名为"用户名"的文本框,则具有一个名为"username_orig"的相应隐藏字段。 然后在表单提交时,您可以使用输入的jquery选择器简单地检查所有输入标签,并与输入标签名称+"_orig"进行比较,看看它们是否相同。 如果不是,则选择框的名称,并且值已更改。

将所有初始值存储在数据集中。

提交时,根据数据集的值检查每个值。

相关文章: