1

每当在 aspx 页面的文本框中输入内容时,我都想隐藏标签。

我正在尝试这样的事情:

protected void txt_LastName_KeyPress(object sender, EventArgs e)
{
    Label_msg.Visible = false;
}
protected void txt_LastName_KeyDown(object sender, EventArgs e)
{
    Label_msg.Visible = false;
}

但它没有发生。我需要在焦点事件中写这样的东西吗?

4

7 回答 7

4

你需要 javascript

这是一个使用jQuery的实现

<script>
    $('#txt_LastName').focus(function() {
        $('#Label_msg').hide();
    });
    $('#txt_LastName').blur(function() {
        $('#Label_msg').show();
    });
</script>

一个普通的 javascript 解决方案将是

<script>
    document.getElementById("txt_LastName").onfocus = function() {
        document.getElementById("Label_msg").style.display = 'none';
    };
    document.getElementById("txt_LastName").onblur = function() {
        document.getElementById("Label_msg").style.display = 'inherit';
    };
</script>
于 2013-10-25T19:54:34.160 回答
2

这个可能对你有帮助。执行以下操作...

首先,将文本框的 AutoPostBack 属性设置为 true

AutoPostBack="True"

然后,使用 OnTextChanged 事件

protected void TextBox1_TextChanged(object sender, EventArgs e)
    {
        Label1.Visible = false;
    }
于 2013-10-25T20:07:19.423 回答
1

您无法更改基于图层事件的服务器端的可见性。您必须将其放入 javascript 程序中。

你必须有可能:最简单的方法是使用 jQuery(你需要包含 jQuery!):

<script type="text/javascript">
$(function() {
    $('#txt_LastName').focus(function() {
        $('#Label_msg').hide();
    });
    $('#txt_LastName').blur(function() {
        $('#Label_msg').show();
    });
}
</script>

第二种方法:硬着头皮做 如果由于某种原因不想使用 jQuery,则必须直接使用 DOM。你可以在那里阅读:W3Schools DOM 方法

于 2013-10-25T20:02:37.610 回答
1

你可以做一些简单的事情,如下所示:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!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>
    <script language="javascript" type="text/javascript">
        function hideOnKeyPress() {
            document.getElementById('lblHidden').style.display = 'none';
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="txtMaintCost" onkeypress="hideOnKeyPress(); return true;" runat="server"></asp:TextBox>
        <asp:Label ID="lblHidden" runat="server" Text="I'll hide when you type something in the text box" />
    </div>
    </form>
</body>
</html>
于 2013-10-25T20:09:36.260 回答
1

您可能想要查看 JavaScript MVVM 库,例如KnockoutJS,如下所示:

<p>Your value: <input data-bind="value: someValue, valueUpdate: 'afterkeydown'" /></p>
<p>You have typed: <span data-bind="text: someValue"></span></p>

// Here's my data model
var viewModel = {
    someValue: ko.observable("edit me")
};

ko.applyBindings(viewModel); // This makes Knockout get to work

这是一个jsFiddle,用于说明通过 KnockoutJS 使用 JavaScript 实现所需的按键功能是多么容易。

于 2013-10-25T20:04:05.137 回答
1

一个简单的javascript解决方案是

HTML

<span id="one">text</span>
<input type="text" onkeypress="hide()" />

Javascript

var isHidden = false;
function hide(){
  if(!isHidden){
   isHidden = true; 
   document.getElementById("one").setAttribute("style","display:none");
  }
}

jsbin演示

于 2013-10-25T20:21:39.930 回答
1

因为与 Winforms 不同,ASP.Net 表单中没有 KeyPress 事件,所以当用户在文本框中键入时,您必须使用 JQuery 简写代码(用于 JavaScript)来处理隐藏标签,如下例所示:

<script>
    $(document).ready(function () {
        $("#txtUserName").keypress(function () {
            $("#lblUser").hide();
        });
    });
</script>
于 2015-12-18T10:36:15.327 回答