2011-06-22 143 views
0

我在其中有一个UpdatePanel一个背景颜色为黄色的文本框和文本框的文本更改触发器,一切正常,除了背景颜色恢复为白色时,我写了一些文本文本框然后集中在其他地方。UpdatePanel重置文本框背景颜色

这是什么造成的?谢谢。

使用asp.net 4.0

这里是asp.net标记:

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <span> 
      <asp:TextBox ID="sticky" runat="server" AutoPostBack="true" 
       Text='<%# Bind("sticky") %>' TextMode="MultiLine" 
       OnTextChanged="cSticky" /> 
     </span> 
    </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="sticky" EventName="TextChanged" /> 
    </Triggers> 
</asp:UpdatePanel> 

这里是CSS:

#StickyDiv textarea 
{ 
height:170px; 
width:185px; 
resize:none; 
margin-top:1px; 
border:none; 
font-family:Comic Sans MS; 
font-size:1.2em; 
padding:3px; 
line-height:1.1em; 
} 

这里是jQuery的:

$(function() { 
    $("#StickyDiv textarea:even").css("background-color","#ffff95"); 
    $("#StickyDiv textarea:odd").css("background-color", "#fe8ab9"); 
}); 
+1

请添加代码,包括影响你的控件的javascript和css。 – Aristos

回答

0

你的问题是,当你在阿贾克斯面板做了更新您的jQuery是不叫。如果文本被更改,则将该框更新为黄色,而不是调用JavaScript,因为它在面板外部呈现。为了解决这个问题,你可以在codebehide中注册脚本,例如:

ScriptManager.RegisterClientScriptBlock(Page,typeof(string),"JavaScriptCall",script.ToString(), false); 
+0

谢谢,伟大的作品 – Wahtever

0

我在下面的例子中做过mple

在ASPX文件

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
    </asp:ScriptManager> 
    <asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
      <ContentTemplate> 
       <asp:TextBox ID="TextBox1" runat="server" BackColor="Yellow" AutoPostBack="true" OnTextChanged="textChanged"></asp:TextBox> 
       <br /> 
       <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
      </ContentTemplate> 
     </asp:UpdatePanel> 

在代码隐藏文件

protected void textChanged(object sender, EventArgs e) 
    { 
     TextBox1.BackColor = System.Drawing.Color.Yellow; 
     Label1.Text = TextBox1.Text; 
    } 
+0

但我使用jquery添加两个不同的背景,因为我有几个文本框 – Wahtever

+0

您可以对每个文本框使用相同的方法。为每个文本框使用onTextChanged =“textChanged”..在使用Textbox1.Backcolor使用This.BackColor代码...我认为这可能会解决您的问题 – Govind