選択した子のユーザーコントロールを特定する方法

私は、多くのコンポーネントコントロールで構成されているユーザーコントロール、ドロップダウンリストを持っています。 メインのHtmlInputTextは入力時にポストバックしますが、フォーカスが失われてもそれは表示されず、他のコントロールを更新する必要があります。 私はonblur関数を追加し、呼び出されますが、フォーカスを取得する要素がユーザーコントロールの一部でない場合にのみポストバックします。

何が選択され、それがコントロールの子であるかをどのようにして判断するのですか?

マークアップ:

    <%@ Register Assembly="MultiDropDown" Namespace="MultiDropDownLib" TagPrefix="MultiDropDownLib" %>
    
    
    
        <table style="width: 328px">
            <tr>
                <td>
                    ProductClass
                </td>
                <td>
                    
                </td>
   ...

And in the control:

if (PostOnBlur)
{
    txtItemList.Attributes.Add("onblur", string.Format("PostBack();", this.ClientID));
}

In the PostBack I want to determine what has focus and if it's part of the control. The original control came from: http://www.codeproject.com/Articles/219977/MultiDropDown-A-multiple-selection-Dropdown-contro

1
asp.netページのマークアップを投稿できますか?商品がどのように正確に構成されているかは不明です。ありがとう。
追加された 著者 Jason Dam,

1 答え

これはjavascriptとjQueryを使ってこれを行う方法です:

<script language="javascript" type="text/javascript">
    $(document).ready(function() {
        $(":input").focus(function() {
            if (this.name.indexOf("$WebUserControl1") > -1) {
                alert("It is child of my control.");
            }
        });
    });
</script>

$ WebUserControl1 をユーザーコントロールの名前に置き換えてください。もしあなたがしたいならば、これはダイナミックにすることもできます。 WebUserControlsはINamingContainerインターフェイスを実装するTemplateControlから継承するため、基本的にはすべてのユーザーコントロールの子には親の名前が含まれます。

がんばろう。

1
追加された
Thanks Hanlet、私はこの世界では新しく、まだjQueryに触れていません。私はそれがコントロールの一部としてjQueryを含むことを意味していると思いますが、すでにフォーム、バージョン、およびすべての一部であれば何が起こるかを読み上げる必要があります。
追加された 著者 GBrookman,
私はそれが働いているが...私が本当に望むのは、ユーザーがコントロールを離れるときに投稿を開始することです。私は使ってみました:visibleしかし、コントロールの外側をクリックしても、別の要素ではクリックしても機能しません。 onmouseoutを使用すべきか、フォーカスオプションとして別の紛失オプションを使用する必要があります。
追加された 著者 GBrookman,
GBrookmanに問題はありませんが、実際にはjQueryをコントロールに含める必要はありません。あなたが確認する必要があるのは、フォーカスを取得しているコントロールには、その名前の親の一部が含まれているということだけです。
追加された 著者 Hanlet Escaño,
TextBoxのOnBlur()イベントは、Javascriptで処理する場合に使用します。サーバーのトリップを行う場合は、OnBlurry()イベントを常に__DoPostBack()メソッドを呼び出すJavascript関数でバインドできます。
追加された 著者 Hanlet Escaño,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript