asp.net textbox的textchange事件!现在遇到如下问题:
我在textchange事件下写了把textbox的值赋值给另一个textbox,改变textbox值后必须失去焦点才会执行textchange事件。如果我改了textb...
我在 textchange事件下写了 把textbox的值赋值给另一个textbox,改变textbox值后必须失去焦点才会执行textchange事件。如果我改了textbox值,然后直接去点击按钮,他会只执行textchange事件,再次点击按钮才会执行按钮的Click事件。求解?
textbox代码如下:
<asp:TextBox ID="TxtEndDate" runat="server" Width="150px" OnTextChanged="TxtEndDate_TextChanged" onblur="isCheckDate(this)" AutoPostBack="True"></asp:TextBox> 展开
textbox代码如下:
<asp:TextBox ID="TxtEndDate" runat="server" Width="150px" OnTextChanged="TxtEndDate_TextChanged" onblur="isCheckDate(this)" AutoPostBack="True"></asp:TextBox> 展开
4个回答
2012-04-11 · 知道合伙人互联网行家
zhuxinjun1982
知道合伙人互联网行家
向TA提问 私信TA
知道合伙人互联网行家
采纳数:2145
获赞数:8329
毕业于上海行健职业学院,大专学历;2007~2009在北大青鸟进修网络编程课目。现任网络主管,平时爱好上网。
向TA提问 私信TA
关注
展开全部
你是想移出文本框的时候就执行textchange事件?然后单击按钮的时候就执行单击事件?
你把textchange这个事件的文本框的autopostback的值设为true即可。但这样做当你离开文本框的时候就会立即触发textchange事件。
如果你离开文本框后直接点击按钮,还是会先触发textchange事件,因为autopostback这个值设置了TURE的原因,所以不会立即执行CLICK事件。除非你将autopostback的值设为true设为FLASH,但是这样做你文本框发生变化后,鼠标离开文本框的时候不会触发事件,只有当单击BUTTON的时候,这时候会同时触发textchange和CLICK这2个事件,当然textchange还是优先于CLICK事件 .
如果你非要这么做是可以的
<%@ 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 type="text/javascript">
function show()
{
//alert("test");
document.getElementById("tbox").value=document.getElementById("tbox1").value;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<%--<asp:TextBox ID="TextBox1" runat="server" OnTextChanged="TextBox1_TextChanged"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>--%>
<input id="tbox" name="tbox" type="text" value="" onfocus="" />
<input id="tbox1" name="tbox1" type="text" value="" onmouseout="show()" />
</div>
<asp:Button ID="Button1" runat="server" Text="Button" CausesValidation="False" OnClick="Button1_Click" />
</form>
</body>
</html>
后台:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
//this.TextBox2.Text = this.TextBox1.Text;
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("asdfasdf");
}
}
已经测试过了,没问题。
你把textchange这个事件的文本框的autopostback的值设为true即可。但这样做当你离开文本框的时候就会立即触发textchange事件。
如果你离开文本框后直接点击按钮,还是会先触发textchange事件,因为autopostback这个值设置了TURE的原因,所以不会立即执行CLICK事件。除非你将autopostback的值设为true设为FLASH,但是这样做你文本框发生变化后,鼠标离开文本框的时候不会触发事件,只有当单击BUTTON的时候,这时候会同时触发textchange和CLICK这2个事件,当然textchange还是优先于CLICK事件 .
如果你非要这么做是可以的
<%@ 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 type="text/javascript">
function show()
{
//alert("test");
document.getElementById("tbox").value=document.getElementById("tbox1").value;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<%--<asp:TextBox ID="TextBox1" runat="server" OnTextChanged="TextBox1_TextChanged"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>--%>
<input id="tbox" name="tbox" type="text" value="" onfocus="" />
<input id="tbox1" name="tbox1" type="text" value="" onmouseout="show()" />
</div>
<asp:Button ID="Button1" runat="server" Text="Button" CausesValidation="False" OnClick="Button1_Click" />
</form>
</body>
</html>
后台:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
//this.TextBox2.Text = this.TextBox1.Text;
}
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("asdfasdf");
}
}
已经测试过了,没问题。
展开全部
你还没了解asp.net的机制,这个涉及到回发的问题。
首先,web应用程序和windows应用程序是不一样的,asp.net的程序都是在服务器端执行的。
你改变了textbox的值,但是服务器这时候并不知道你修改了textbox的值,只有当你把textbox置成autopostback=true的时候,即失去焦点的时候,才会递交到服务器端。这时候,系统才会判别到文本框里的内容变化了,于是才会执行textchange事件,这个和windows form差别所在。同理,你点击按钮的时候,也会触发textchange事件,因为点击按钮相当于进行了一次回发。
而且我看到你的代码里边并没有onclick事情,你点击按钮,应该触发的是onblur失去焦点的时间。
首先,web应用程序和windows应用程序是不一样的,asp.net的程序都是在服务器端执行的。
你改变了textbox的值,但是服务器这时候并不知道你修改了textbox的值,只有当你把textbox置成autopostback=true的时候,即失去焦点的时候,才会递交到服务器端。这时候,系统才会判别到文本框里的内容变化了,于是才会执行textchange事件,这个和windows form差别所在。同理,你点击按钮的时候,也会触发textchange事件,因为点击按钮相当于进行了一次回发。
而且我看到你的代码里边并没有onclick事情,你点击按钮,应该触发的是onblur失去焦点的时间。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你鼠标移开后,输入指针仍然的输入框里,所以输入框并没有失去焦点,你鼠标在任何一个地方点一下(包括你说的button),就会执行textchange事件。这个本来就是这个,你要想先执行textchange的话,就要输入完后在输入框的空白处点一下,再点按扭。
其实这个也不是什么问题,因为很多输入都是这样设计的,输入完后在旁边点一下,让输入框失去焦点。
或者你找下textbox的输入事件,边输入边触发的。
其实这个也不是什么问题,因为很多输入都是这样设计的,输入完后在旁边点一下,让输入框失去焦点。
或者你找下textbox的输入事件,边输入边触发的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你要仅仅是把他的值赋给另一个textbox,用js就可以实现了吧,用后台多麻烦啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询