2012-02-10 16 views
1

javascript関数をユーザーコントロールに関連付ける方法はありますか?私は.ascxで書かれた名前コントロールを持っていると言うことができます。クライアント側の関数を定義することはできますか(例えば.clear())、これは名前コントロールに関連付けられます。 clear関数は、そのコントロールのすべての要素をクリアします。私はclear()javascript関数を作成することができますが、それはグローバルなjavascript関数であり、必ずしも名前コントロールに縛られるとは限りません。私は、これはMSを使用して行うことができます知っているusercontrolに関数を関連付ける方法はありますか?

name.clear(); 

:何か私は名前のオブジェクトへの参照を持っていることを考えると、私は単純にその参照からその関数を呼び出すことができるはずように、名前のコントロールに機能を結びつけたいですAjaxのフレームワークですが、jQueryを使ってそのようなことをすることができるかどうかは不思議でした。

答えて

0

「クリア」は、テキスト/パスワードの入力、テキストエリアの値を設定し、空の文字列に要素を選択する意味、そして!checkedにラジオやチェックボックスを設定することであれば、あなたはこのような何か行うことができます。

$("#someid").find('select,textarea,input[type="text"],input[type="password"]').val(''); 
$("#someid").find('input:radio,input:checkbox').prop('checked',false); 

やプラグインとして:

(function($) { 
    $.fn.clearChildren = function() { 
    this.find('select,textarea,input[type="text"],input[type="password"]').val(''); 
    this.find('input:radio,input:checkbox').prop('checked',false); 
    return this; 
    }; 
})(jQuery); 

$("#someid").clearChildren(); 

デモ: "入力" 全てセレクを選択するセレクタhttp://jsfiddle.net/nnnnnn/AvfUz/

(jQueryの持っていますテキストボックスや入力には影響しませんが、チェックボックスとラジオの値を別々に設定する必要はありません。)

+0

私はプラグインオプションが好きですが、私は、clearChildren関数をnameControlに結びつけることは何もないと心配しています。 clearChildrenはグローバル関数であり、任意のオブジェクトに対して呼び出すことができます。 Ofcourse私は、clearChildren関数を呼び出すオブジェクトがnameControlで何か他のものではないことを関数内で調べることができますが、関数をクラスに結びつけるために使用できるjQueryレベルサポートの可能性を検討していました。 – CSC

+0

私はあなたの懸念を本当に理解していません。なぜそのタイプの機能を1つのコントロールに制限したいのですか?私は、あなたが適切なJSを出力する<%= TheControl.clear()%>など、対応するサーバー側クラスにメソッドを追加できると思います。ちなみに、あなたのコントロールがhtmlフォーム要素ならば、あなたは組み込みの.reset()メソッドを呼び出すことができます... – nnnnnn

+0

返信のためにnnnnnnに感謝します。ここで私は機能を単一のコントロールに制限したいのです。私たちのチームのユーザーコントロールのほとんどは、Ajaxフレームワークを使用して作成されています。彼らはそれらのコントロールの内容をクリアする "clear()"メソッドを持っています。 Ajaxフレームワークはユーザーがクラスを簡単に制御できるようにするためのものです。あなたはAjaxコントロールを持って、それに対して "clear()"が定義されている "Address"と言うことができます。

.clear()を呼び出すと、コードはアドレスコントロールの内容をクリアします。 – CSC

0

ユーザコントロール自体は実際のhtml要素としてレンダリングされませんが、実際にhtml要素としてレンダリングされるユーザーコントロールの部分は、クライアントスクリプトから参照できます。

あなたはページからHTMLやこのようなユーザーコントロールにコントロールクライアントIDを記述する必要があります。

<script type="text/javascript"> 
    $('#<%= TheControl.ClientID %>').clearChildren(); 
</script> 

子供をクリアするためのjQueryの関数は、@のNNNNNNの答えで定義されています。

関連する問題