1

私はこれを持っていますTextBox txtCustomerName、それはに関連付けられていますAjax AutoCompleteExtender、私がしていることはOnClientItemSelectedこれで関数をAutoCompleteExtender呼び出すことです。このようなもの..LoadCutomerDetailsjQuery

<asp:TextBox ID="txtCustomerName" runat="server" ClientIDMode="Static"></asp:TextBox>
<ajax:AutoCompleteExtender runat="server" ID="autoComplete1" TargetControlID="txtCustomerName"
ServicePath="~/AutoComplete.asmx" ServiceMethod="GetCompletionList" MinimumPrefixLength="1" CompletionInterval="10" CompletionSetCount="15" OnClientItemSelected="PopulateData">

データの入力は次のように定義されます

 function PopulateData() {
        var data2 = $('#txtCustomerName').val().split('-')[0];
        var newData = data2.substring(0, data2.length - 1);

        $.ajax({
            url: '/AutoComplete.asmx/GetPriorityAndRemarks',
            type: 'POST',
            timeout: 5000,
            datatype: 'xml',
            cache: false,
            data: 'arg=' + newData,
            success: function (response) {
                var doc = response;
                var result = $(doc).find("string").text();
                // the values is in form of name, address, mobile, priority and remark
                var resultAry = result.split(':');
                $('#lbCustomerName').val(resultAry[0]);
                $('#lblAddress').text(resultAry[1]);
            }
        });
    };

focusoutここで、イベントハンドラーをイベントに関連付けて、値があるかどうかをjQuery確認します。値がない場合は、これが新規顧客であるため、詳細を追加できるポップアップダイアログを開きます。lbCustomerNamelblAddress

問題は

  1. focusoutイベントは、データが入力される前にlbCustomerName発生しlblAddress(データを入力することにより)、データがある場合でも常にnullになります。(アラートを表示してフォーカスアウトイベントを確認しましたが、ラベルのテキストが更新される前にアラートが表示されました。)

  2. ユーザーは、リストから項目を選択するだけでなく、テキストボックスに入力することもできます。AutoCompleteExtenderしたがって、その場合、はPopulalteData呼び出されませんが、フォーカスアウトは呼び出されます。

私がやりたいのは、ユーザーがボックスに入力したときつまり、起動されないとき)にのみfocusoutそのイベントを呼び出すことです。これは、リストから選択していない場合は、明らかに新しい顧客であるためです。それで、これを行う方法はありますか?または、正確にこれではない場合、私が試みていることを達成するための他の方法はありますか?OnClientItemSelected

4

1 に答える 1

0

カップルの考え:

1)ユーザーがリストから選択していない場合、リストに含まれていないと本当に想定できますか?たとえば、ユーザーの名前がトムで、オートサジェストを使用せずにすばやく入力する場合です。

resultAry2)OnClientItemSelectedを使用する代わりに、focusoutイベントを介してPopulateDateを呼び出し、名前/アドレスがajax成功コールバック内にない場合はダイアログをポップアップできますか?

于 2012-09-06T08:52:20.710 に答える