web-dev-qa-db-ja.com

jQueryのオートコンプリート、変更イベントが期待どおりに機能しない

おはようございます、

私は次のコードを持っています:

$("#close-request-field-clinic").autocomplete({
                source: arrayClinic,
                delay: 0,
                minLength: 0,
                isDivider: function( item ) {
                  return false;
                },
                focus: function ( event, ui ) {
                    $('#close-request-field-clinic').val( ui.item.label );
                    return false;
                },
                select: function( event, ui ) { 
                    $('#close-request-field-clinic').val( ui.item.label );
                    if(ui.item.value == -1) {
                        resetField('#close-request-field-clinic', false);
                    } else {
                        successField('#close-request-field-clinic');
                        setKey(finalValues, 'clinic', ui.item.value);
                        if(msieversion()) {
                            $(this).blur();
                        }
                    }
                    checkValidation(fieldCheck,'#close-request-personal-information-next');
                    return false;
                },
                change: function( event, ui ) {
                    alert('change');
                    if(!ui.item) {
                        resetField('#close-request-field-clinic', false);
                        removeKey(finalValues, 'clinic');
                    }
                    checkValidation(fieldCheck,'#close-request-personal-information-next');
                    return false;
                }
            }).focus(function(){$(this).autocomplete("search", "")});

これの大部分は完全に機能しますが、フィールドが変更されたときに「変更」イベントが常にトリガーされるとは限らないようです。

リストから要素を選択する場合は正常に機能しますが、バックスペース(削除)キーを使用してボックス内の値を削除し、テキストボックスをクリックすると、変更イベントは場合によってはのみになります。と呼ばれる。足りないものはありますか?..値を手動で削除した場合にのみ呼び出されないようです。

よろしく、ジョシュ

9
Josh90

これは代替のクリーンソリューションです

$("#close-request-field-clinic").on("autocompletechange", function(event,ui) {
       alert($(this).val());
    });

この回答は ここ からコピーされました

9
Faruk Omar