0

私はasp.netc#を使用していますが、ユーザーがフォームのテキストボックス内をクリックしてラベルを非表示にした場合に、このラベルを使用しています(フィードバックにはこのラベルを使用しています)。

次のコードのようなものを試しましたが、ラベルが非表示になることはありません。

hiddenMsg.Visible = true;
.
.
.

private void compTxt_TextChanged(object sender, EventArgs e)
{
    if (!IsPostBack)
        {
            hiddenMsg.Visible = false;
        }
}

私のaspxファイルには次のものがあります。

<asp:TextBox ID="compTxt" runat="server" TabIndex='11' AutoPostBack="true" ontextchanged="compTxt_TextChanged" ></asp:TextBox>

[私の質問を更新しました]

私は目標を達成するためにJavascriptを使用しており、それを達成するためにVisible = falseの代わりにJSでstyle.display属性を使用していますが、asp:TextBoxで使用している方法がわかりません。 asp:TextBoxからJavaScriptメソッドを呼び出す方法についてはどうですか?

function hideMsgs() {
      document.getElementById('<%= hiddenMsg.ClientID %>').style.display = 'none';
}  

<asp:Label ID="hiddenMsg" runat="server" Text="Successfully Saved" style="display:inherit;"/>


<asp:TextBox ID="compTxt" runat="server" TabIndex='11' OnClientClick="hideMsgs()"/>
4

2 に答える 2

2

IsPostBack チェックを取り除きます。これは常にポストバックになります。

private void compTxt_TextChanged(object sender, EventArgs e)
{
    hiddenMsg.Visible = false;
}

クライアント側のソリューションの場合、ページの読み込みで:

protected void Page_Load(object sender, EventArgs e)
{
    compTxt.Attributes.Add("onclick", "document.getElementById('hiddenMsg').style.display = 'none';");
}

プロジェクトでマスター ページを使用している場合は、ページの読み込みで代わりに次の行を使用します。

compTxt.Attributes.Add("onclick", "document.getElementById('" + hiddenMsg.ClientID + "').style.display = 'none';");
于 2013-01-24T13:34:35.650 に答える
0

クライアント側でクリックしても、ポストバックが発生することはありません。そのコードを処理するにはポストバックが必要です。ラベルのクライアント側を非表示にできるように、JavaScript を使用してクリック イベントを処理することをお勧めします。その後、ポストバックは必要ありません。

于 2013-01-24T13:35:39.780 に答える