简体   繁体   English

文本框值onclick onblur问题

[英]Textbox value onclick onblur issue

<asp:TextBox ID="TxtBOX" 
        runat="server"              
        CssClass="text"
        Height="32px" 
        Width="360px"  
        TextMode=MultiLine         
        TextWrapping="Wrap"
        AcceptsReturn="True"
        VerticalScrollBarVisibility="Visible"
        onclick="if(this.value='<%=_data.Obsprevia.ToString()%>'){this.value=''}"             
        onblur="if(this.value=''){this.value='<%=TxtObservaciones.Text.ToString()%>'}">

     </asp:TextBox>

That's my code. 那是我的代码。

Default TxtBOX.Text comes from code behind (_data_obsprevia). 默认的TxtBOX.Text来自(_data_obsprevia)后面的代码。 What I want to achieve is, a clean up of that default text once the user clicks on the textbox. 我要实现的是,一旦用户单击文本框,便会清理该默认文本。 And if the txbox lose focus while the user didn't write anything, get back that default text. 并且如果在用户未编写任何内容时txbox失去了焦点,请找回该默认文本。

I can't achieve that, and if the user DID write something, and lose-gain focus again, the textbox gets empty again. 我无法实现这一点,如果用户DID写点东西,并且再次失去焦点,则文本框将再次变空。

Thanks. 谢谢。

EDIT 编辑

Fixed the == inside the IFs, Now it looks like this 修复了IF中的==,现在看起来像这样

<asp:TextBox ID="TxtBOX" 
        runat="server"              
        CssClass="text"
        Height="32px" 
        Width="360px"  
        TextMode=MultiLine         
        TextWrapping="Wrap"
        AcceptsReturn="True"
        VerticalScrollBarVisibility="Visible"
        onclick="if(this.value=='<%=_data.Obsprevia.ToString()%>'){this.value=''}"             
        onblur="if(this.value==''){this.value='<%=TxtObservaciones.Text.ToString()%>'}">

     </asp:TextBox>   

But when I first click on it, it's not cleaning the deafult data. 但是,当我第一次单击它时,它并没有清除默认数据。 And if I erase it, and go losing focus it shows <%=TxtObservaciones.Text.ToString()%> Not the value held inside of it. 而且,如果我擦除它并失去焦点,它会显示<%=TxtObservaciones.Text.ToString()%>不是包含在其中的值。

It should be: 它应该是:

if (this.value == '') {}

As == compares values and = asigns a value. 由于==比较值,而=表示值。

Try this, a build onto insertusernamehere's suggestion.. 尝试此操作,在此基础上建立insertusername的建议。

onclick="if(this.value=='<%=_data.Obsprevia.ToString()%>'){this.value=''}"             
onblur="if(this.value==''){this.value=document.getElementById('<%= TxtObservaciones.ClientID %>').value}"

This gets what is set in the textbox from javascript, in case it is changed in the browser. 如果在浏览器中进行了更改,这将从javascript获取文本框中设置的内容。

You also might need to break the code out into functions 您可能还需要将代码分解为功能

     function TxtBOX_OnClick() {
         var TxtBOX = document.getElementById("<%= TxtBOX.ClientID %>");
         if (TxtBOX.value == "<%=_data.Obsprevia.ToString()%>") {
             TxtBOX.value = '';
         }
     }
     function TxtBOX_OnBlur() {
         var TxtBOX = document.getElementById("<%= TxtBOX.ClientID %>");
         if (TxtBOX.value == '') {
             TxtBOX.value = document.getElementById("<%= TxtObservaciones.ClientID %>").value;
         }
     }

and

onclick="TxtBOX_OnClick();"             
onblur="TxtBOX_OnBlur();"             

Something like this? 像这样吗

<input type="text" value="Search..." onclick="if(this.value=='Search...'){this.value=''}" onblur="if(this.value==''){this.value='Search...'}">

I'm not familiar with ASP, but hopefully this can help :) 我对ASP不熟悉,但是希望这可以有所帮助:)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM