我正在后端开发一个带有c#的ASP.NET页面。
我有一些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('__LASTFOCUS').value=this.id} catch(e) {} + this.value=''" ></asp:TextBox>
我知道使用+
无法完成,但是有什么方法可以做到这一点吗?
答案 0 :(得分:0)
而不是这样做(它会在控件有焦点时清除值)你不能从后面的代码中清除它,如下所示
protected void Page_Load(object sender, EventArgs e)
{
if (TextBox.Text.Trim().Length > 0)
{
TextBox.Text = String.Empty;
}
}
答案 1 :(得分:0)
您应该创建一个JavaScript函数来处理应用焦点:
applyFocus = function(ctrl, clearOnFocus) {
if (clearOnFocus){
ctrl.value = "";
}
ctrl.focus();
}
你可以像这样实现它:
<asp:TextBox Id="txtPassword" runat="server" TextMode="Password" onfocus="applyFocus(this, true);" ...>
答案 2 :(得分:0)
通过我的文本框的id调用它,由asp.net生成。
if(document.getElementById('REQUEST_LASTFOCUS') == document.getElementById('MainContent_TextBoxAdgangskode'))
{
document.getElementById('MainContent_TextBoxAdgangskode').value = '';
}
我不知道这是一个“好的实践”直接调用id,但我无法让对方工作。