1

バックエンドで 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(&#39;__LASTFOCUS&#39;).value=this.id} catch(e) {} + this.value=''" ></asp:TextBox>

ではできないことはわかっていますが+、これを行う方法はありますか?

4

3 に答える 3

0

asp.netによって生成されたテキストボックスのIDで呼び出すことで解決しました。

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

これがIDを直接呼び出すための「良い方法」であるかどうかはわかりませんが、もう一方を機能させることができませんでした。

于 2011-10-18T11:37:51.280 に答える
0

代わりにこれを行うと(コントロールにフォーカスがある場合は常に値がクリアされます)、以下のようにコードビハインドから値をクリアすることはできません

protected void Page_Load(object sender, EventArgs e)
{
    if (TextBox.Text.Trim().Length > 0)
    {
      TextBox.Text = String.Empty;
    }
}
于 2011-10-17T13:38:42.130 に答える
0

フォーカスの適用を処理する JavaScript 関数を作成する必要があります。

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

そして、次のように実装できます。

<asp:TextBox Id="txtPassword" runat="server" TextMode="Password" onfocus="applyFocus(this, true);" ...>
于 2011-10-17T16:26:32.330 に答える