2009-11-30 10 views
6

私は2つのテキストボックスを持っています。tbxProdAc & txtbxHowMany。私は1つのテキストを入力すると、別のテキストにある可能性のあるテキストが削除されるように、コードの中に少しのコードを書きたいと思います。Attributes.Add OnclickイベントのC#コードの背後に

これを達成するにはどうしたらよいでしょうか、どのイベントでそれを配置する必要がありますか?

私は、ページロードイベントで

txtbxHowMany.Attributes.Add("onclick", "document.getElementById('tbxProdAC').innerText='';");

を使用することを試みたが、成功twithout ...これはpre_initにすべきですか?

あなたが告げる可能性があるので、ここで働く初心者を完了してください。

答えて

7

まず、.Netコントロールの場合、IDがまだ "tbxProdAC"であるページが生成されたときにIDが変更されていることを確認します。この場合、クラスを使用できます。

は、次のことを試してみてください - これはjQueryのを使用しています - あなたは

txtbxHowMany.Attributes.Add("onclick", "$('#tbxProdAC').val('');"); 

があなたのページのヘッドセクションに以下を追加することを含める必要があります。

<script type="text/javascript" src="jquery.js"></script> 

そして、あなたはここからJQuery.Jsファイルを取得することができます。http://docs.jquery.com/Downloading_jQuery#Download_jQuery

と理由:https://stackoverflow.com/questions/308751/why-use-jquery

+0

Pinoに感謝します - 「あなたはそれを含める必要があります」と言っているのは、jqueryライブラリにソースコードまたは実際にコードを参照するだけでよいということですか? (厚い質問に対する謝罪) – MrDean

+1

私はメインポストを更新しました。質問すると「厚い」ではありません。我々はすべて質問をする必要があります!何が良いかを尋ね続けてください。 – LiamB

+0

うーん...私は間違ったことをしたに違いない! 私は提供されたコードを使用しました。ページはうまくロードされ、tbxProdACにデータを入力してからtxtbxHowManyをクリックしました。これにより、「オブジェクトがこのプロパティまたはメソッドをサポートしていません」というエラーが発生しました どこか間違っているはずです。私は、 '... attributes.add ..'をページロードイベントの背後にある私のC#コードに入れました...それは正しいのですか?これはmymainのソースコードに入るべきですか? ご協力いただきありがとうございます。 – MrDean

-1

あなたがデザインビューを使用している場合、あなたは自分のテキストボックスをダブルクリックすると、それはあなたのためにこれらのメソッドを作成します。

private void tbxProdAc_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void txtbxHowMany_TextChanged(object sender, EventArgs e) 
    { 

    } 

、あなたはちょうどこのようにそれらを編集する必要があります。

 private void tbxProdAc_TextChanged(object sender, EventArgs e) 
    { 
     txtbxHowMany.Clear(); 
    } 

    private void txtbxHowMany_TextChanged(object sender, EventArgs e) 
    { 
     tbxProdAc.Clear(); 
    } 
+0

TextBox .. ::。TextChangedイベント - テキストボックスのコンテンツがサーバーへの投稿の間で変更されたときに発生します。 – LiamB

1

ASP.NETが生成されたコントロールのIDを変更しますので、おそらくあなたのtbxProdAcはそのを持っていますidが何かに変更されました。あなたの

txtbxHowMany.Attributes.Add("onclick", "document.getElementById('tbxProdAC').innerText='';"); 

に新しいIDを持つ「tbxProdAc」を、一度ソースの表示をアプリを実行して、コントロールのIDを知っているし、次に交換する必要があるとはい、それはオンロードに動作します。

1

ここでは、コントロールが別のコントロール(たとえばグリッド)の中にある場合、asp.netはコントロールのIDをプレフィックスにして、コントロールのIDを一意に保持します。たとえば、idはtxbProdAcではなくそれはGridview1_txbProdAcまたはこれでもあります: Panel1_Panel2_gridview1_txProdAc。

ID asp.netがあなたのコントロールを '与える'または '名前を変更'するコードを知りたい場合は、.ClientIDプロパティを使用することができます: txtProdAc.ClientIDは、 javascript/jquery

txbProdAcを別のコントロール内に配置すると、.ClientID関数がクライアントスクリプト内のコントロールの正しいIDを常に提供するため、それでも機能します。

ミシェル

0

Michel's答えに展開するには、追加しますしているイベントは正しいはずですが、あなたは、ASP.NETがクライアントに送信されますID変更として、異なるIDセレクタを設定する必要があります。

txtbxHowMany.Attributes.Add("onclick", string.Format("document.getElementById('{0}').innerText='';", tbxProdAC.ClientID)); 
0

TheOneが答えたものを少し追加すると、ウェブページのソースを見るとレンダリングされたコンテンツが表示されます。ここでIDは異なります。このようなもの。

txtbxHowMany.Attributes.Add("onclick", "document.getElementById('ctl00_ContentPlaceHolder1_tbxProdAC').innerText='';") 
関連する問題