2011-10-17 56 views
1

我正在开发一个ASP.NET页面与c#在后端。添加到OnFocus代码隐藏而不删除当前OnFocus

我有一些JavaScript来跟踪回发前的最后焦点在哪里,并在回发后设置它。但是,如果获取焦点的字段是密码字段,则需要在控件获得焦点时清除输入。

我加入这个是这样的:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (TextBox.Text.Trim().Length > 0) 
    { 
    TextBox.Attributes.Add("onfocus", "this.value=''"); 
    } 
} 

,但现在它覆盖我的JavaScript,所以当我点击下一个文本框的焦点将丢失。

我可以以某种方式添加线条吗?就像这样:

<asp:TextBox ID="TextBoxPassword" runat="server" TextMode="password" onfocus="try{document.getElementById(&#39;__LASTFOCUS&#39;).value=this.id} catch(e) {} + this.value=''" ></asp:TextBox> 

我知道它不能用+来完成,但是有一些方法来做到这一点?

+0

你真的想要密码字段丢失的内容只有第一次集中它呢? – Deeptechtons

回答

0

曾为它鸥t通过由我的文本框的id调用它,由asp.net生成。

if(document.getElementById('REQUEST_LASTFOCUS') == document.getElementById('MainContent_TextBoxAdgangskode')) 
        { 
         document.getElementById('MainContent_TextBoxAdgangskode').value = ''; 
        } 

我不知道这是一个“好的实践”,直接调用id,但我无法让其他工作。

0

,而不是做这个(这将永远清除值当控件具有焦点)你不能清除它从后面的代码像下面

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (TextBox.Text.Trim().Length > 0) 
    { 
     TextBox.Text = String.Empty; 
    } 
} 
+0

我忘了提及我在文本框(textbox = password)周围使用了一个updatepanel,所以我只需要更新该页面的内容而不是完整的回发。所以即时通讯使用asyncpostbacktrigger。 您无法在textmode =“password”的文本框上设置TextBox.Text。 我试图把它添加在JavaScript中,但并没有真正的工作。我不擅长JavaScript,并且正确地解决问题。 Pastbin链接(原因我不允许张贴这么多字符): http://pastebin.com/TLYe9rSd – Toby

0

你应该创建一个JavaScript函数来处理应用的重点:

applyFocus = function(ctrl, clearOnFocus) { 
    if (clearOnFocus){ 
     ctrl.value = ""; 
    } 
    ctrl.focus(); 
} 

而且可以实现这样的:

<asp:TextBox Id="txtPassword" runat="server" TextMode="Password" onfocus="applyFocus(this, true);" ...> 
+0

这看起来不错,但我已经有一个JavaScript来处理最后的焦点,它将自身添加到每个控件上我的页面。所以斜面我把像这样在JavaScript藏汉: 如果(的document.getElementById( 'REQUEST_LASTFOCUS')==的document.getElementById( '<%= TextBoxAdgangskode.clientID%>') { 的document.getElementById('TextBoxAdgangskode ').value =“”; } } 其他JavaScript处理REQUEST_LASTFOCUS,所以即时通讯不真正确定什么即时消失if。 – Toby

+0

好吧,所以我发现,我真的太习惯intellisense:PI有一个缺少')'在if语句中,并添加.clientid在哪里添加值也是。 但它仍然无法正常工作。这里是脚本如何看起来像现在的代码: http://pastebin.com/H9rgykPm 再次不考虑我如何得到REQUEST_LASTFOCUS,这是完美的工作。我只是想获得如果工作台工作:) – Toby