0

ソースとして事前定義されたユーザーリストがあるオートコンプリートUIがあります。ユーザーがリストからユーザーを選択すると、そのIDが非表示フィールドに保存されます。ここまでは大丈夫です。ここで、ユーザーがオートコンプリートリストにないユーザー名を書き込んだ場合、非表示フィールドの値を0に変更して、他のタスクを実行する必要があります。しかし、私はこれを行うことができません...

.changeイベントを使用してみましたが、機能しません。これがコードです。

$.ajax({
                type: "POST",
                url: "CHService.asmx/GetClient",
                dataType: "json",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    $('#txtName').autocomplete({
                        minLength: 0,
                        source: function (req, responseFn) {
                            var re = $.ui.autocomplete.escapeRegex(req.term);
                            var matcher = new RegExp("^" + re, "i");
                            var a = $.grep(data.d, function (item, index) {
                                return matcher.test(item.value);
                            });
                            responseFn(a);
                        }, //Searches user input with first letter of ...//data.d
                        select: function (event, ui) {
                            $('#txtName').val(ui.item.value);
                            $('#HFuser').val(ui.item.Name);

                            alert('Select' + ui.item.Name);
                            //return false;
                        },
                        change: function (event, ui) {
                            alert('Change' + ui.item.Name);
                            if (ui.item == null) {
                                $('#HFuser').val(0);


                                //return false;
                            }
                        }
                    });

つまり、基本的に必要なのは、UserIdユーザーがオートコンプリートから値を選択したときに設定するかuserid=0、ユーザーが新しい値を入力したときに設定することです。

UPDATE

ui.item==null is true追加するのを忘れた場合、.changeイベントは機能しません。これは、の値とアラートが原因で例外を発生させるたびに発生するためです。

4

2 に答える 2

0

autosuggest が定義済みのユーザー リストで現在の入力文字列を見つけられない場合に非表示の入力を操作する場合は、autosuggest.close メソッドを使用することをお勧めします。入力文字列に一致するものがない場合、提案メニューは閉じます。「閉じる」メソッドの詳細は次のとおりです。

close( event, ui )タイプ: autocompleteclose

メニューが非表示になったときにトリガーされます。すべての終了イベントに変更イベントが伴うわけではありません。event タイプ: イベント ui タイプ: オブジェクト

コード例:

指定されたクローズ コールバックでオートコンプリートを初期化します: $( ".selector" ).autocomplete({ close: function( event, ui ) {} });

イベント リスナーを autocompleteclose イベントにバインドします

$( ".selector" ).on( "autocompleteclose", function( event, ui ) {} );

ソース:ここにリンクの説明を入力

これを変更します:

 change: function (event, ui) {
                        alert('Change' + ui.item.Name);
                        if (ui.item == null) {
                            $('#HFuser').val(0);


                            //return false;
                        }
                    }

に:

 close: function (event, ui) {
       $('#HFuser').val(0)
  }
于 2012-12-07T06:37:05.200 に答える