AJAX TextBox的TextChanged事件不执行

尐孑 2008-12-25 10:17:03
我用Ajax技术做的一个页面 在UpdatePanel中有一个TextBox 它的TextChanged事件不执行怎么回事呀?
高手指点一下啦!
...全文
1053 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
流浪河 2008-12-25
  • 打赏
  • 举报
回复
没用过AJAX控件 都是直接用JS去实现
89993004 2008-12-25
  • 打赏
  • 举报
回复
keypress
leixg 2008-12-25
  • 打赏
  • 举报
回复
可能是没设置Triggers
<asp:UpdatePanel ID="LeftUpdatePanel" runat="server">
<ContentTemplate>
<asp:GridView ID="LeftGridView" runat="server" ShowFooter="True" Width="562px">
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="SearchBtn" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
takako_mu 2008-12-25
  • 打赏
  • 举报
回复

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>未命名頁面</title>
<script type="text/javascript">

function pageLoad()
{
refresh_Textbox5();
}

function refresh_Textbox5()
{
if( $get("TextBox5").value != $get("TextBox4").value )
{
$get("TextBox5").value = document.getElementById('TextBox4').value;
}
window.setTimeout(refresh_Textbox5, 1000);
}

function ChangeTextbox4()
{
$get("TextBox4").value=document.getElementById('TextBox3').value;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
</div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server" ontextchanged="TextBox1_TextChanged" AutoPostBack="true"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>

<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:TextBox ID="TextBox3" runat="server" ></asp:TextBox>
<asp:TextBox ID="TextBox4" runat="server" ontextchanged="TextBox4_TextChanged" AutoPostBack="true"></asp:TextBox>
<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>



public partial class CSDN_AJAX_TextboxChange : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TextBox3.Attributes.Add("onKeyPress", "return ChangeTextbox4(event);");
}
}

protected void TextBox1_TextChanged(object sender, EventArgs e)
{
TextBox2.Text = TextBox1.Text;
}

protected void TextBox4_TextChanged(object sender, EventArgs e)
{
TextBox5.Text = TextBox4.Text;
}
}

我又補充了一下,請看JS中refresh_Textbox5(),通過每隔1秒檢查一次Textbox4來判斷需不需要修改Textbox5的值。。。。
累死了。。。。。。
takako_mu 2008-12-25
  • 打赏
  • 举报
回复
對于B/S結構來說,你不請求Server,Server是不會主動回傳的。
像你說的這種情況只能每個一段時間去請求check一次,比如每隔1分鐘去檢查一下Textbox.Text是否改變。
lxl_sports 2008-12-25
  • 打赏
  • 举报
回复
把textbox的autopostback属性设为true


还有你的webconfig 配置好了没有???

你可以建立一个ajax 项目 然后就不用配置webconfig了
takako_mu 2008-12-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 meixiafeng 的回复:]
TextBox的值是从另一个页面赋给的
我刚才试了 敲一下回车就可以了
但是这样不是很麻烦吗
我想得到值就自动触发事件
[/Quote]
我明白你的意思了。。。。
你這個用updatepanel模式不好做。。
要用AJAX的另一種模式,webservice+JS+XML模式做。。
takako_mu 2008-12-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 meixiafeng 的回复:]
TextBox的值是从另一个页面赋给的
我刚才试了 敲一下回车就可以了
但是这样不是很麻烦吗
我想得到值就自动触发事件
[/Quote]
請看我在5樓為你做的解答。
尐孑 2008-12-25
  • 打赏
  • 举报
回复
TextBox的值是从另一个页面赋给的
我刚才试了 敲一下回车就可以了
但是这样不是很麻烦吗
我想得到值就自动触发事件
takako_mu 2008-12-25
  • 打赏
  • 举报
回复
這樣就不需要添加AutoPostBack="true"
takako_mu 2008-12-25
  • 打赏
  • 举报
回复

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>未命名頁面</title>
<script type="text/javascript">

function pageLoad() {
}

function ChangeTextbox4()
{
$get("TextBox4").value=document.getElementById('TextBox3').value;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
</div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server" ontextchanged="TextBox1_TextChanged" AutoPostBack="true"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>

<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:TextBox ID="TextBox3" runat="server" ></asp:TextBox>
<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>



public partial class CSDN_AJAX_TextboxChange : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
TextBox3.Attributes.Add("onKeyPress", "return ChangeTextbox4(event);");
}
}
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
TextBox2.Text = TextBox1.Text;
}
}

我把剛才說的Onkeydown補充一下。一邊寫一邊改變。
anncesky 2008-12-25
  • 打赏
  • 举报
回复
没用过UpdatePanel,都用ajaxpro.dll或手写JS

直接onchange调用服务器端方法
takako_mu 2008-12-25
  • 打赏
  • 举报
回复

<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
</div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server" ontextchanged="TextBox1_TextChanged" AutoPostBack="true"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>


protected void TextBox1_TextChanged(object sender, EventArgs e)
{
TextBox2.Text = TextBox1.Text;
}

我自己寫了一個,是可行的,大概是你的AutoPostBack="true",另外在textbox中寫完記得加回車。
如果你想實現一邊寫一邊改變那就不要用ontextchanged事件,用鍵盤onkeydown事件。
wsg13793257207 2008-12-25
  • 打赏
  • 举报
回复
把textbox的autopostback属性设为true
zhuanshen712 2008-12-25
  • 打赏
  • 举报
回复
没用过UpdatePanel。
你看看给它添加一个textchanged事件行不行。
wangzhenyue 2008-12-25
  • 打赏
  • 举报
回复
AJAX 简单实现这个功能!!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧