私はこれを持っていますTextBox txtCustomerName
、それはに関連付けられていますAjax AutoCompleteExtender
、私がしていることはOnClientItemSelected
これで関数をAutoCompleteExtender
呼び出すことです。このようなもの..LoadCutomerDetails
jQuery
<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
確認します。値がない場合は、これが新規顧客であるため、詳細を追加できるポップアップダイアログを開きます。lbCustomerName
lblAddress
問題は
focusoutイベントは、データが入力される前に
lbCustomerName
発生しlblAddress
(データを入力することにより)、データがある場合でも常にnullになります。(アラートを表示してフォーカスアウトイベントを確認しましたが、ラベルのテキストが更新される前にアラートが表示されました。)ユーザーは、リストから項目を選択するだけでなく、テキストボックスに入力することもできます。
AutoCompleteExtender
したがって、その場合、はPopulalteData
呼び出されませんが、フォーカスアウトは呼び出されます。
私がやりたいのは、ユーザーがボックスに入力したとき(つまり、起動されないとき)にのみfocusout
そのイベントを呼び出すことです。これは、リストから選択していない場合は、明らかに新しい顧客であるためです。それで、これを行う方法はありますか?または、正確にこれではない場合、私が試みていることを達成するための他の方法はありますか?OnClientItemSelected