web-dev-qa-db-ja.com

要素に追加されたオートコンプリートを削除するにはどうすればよいですか?

次のような要素にオートコンプリートを追加した後:

commObj=$("#communityName").autocomplete("auto_commName_backend.php",
                {'onItemSelect': handleItemSelect}, {'extraParams': 'ndo' + ndo});

それを無効にしたり、要素のオートコンプリートを動的に削除したりする方法はありますか?

DylanVerheulの変更されたjqueryオートコンプリートプラグインを使用しています。 http://www.pengoworks.com/workshop/jquery/autocomplete_docs.txt

19
P Coder

次のコード行を使用して、オートコンプリートの動作を削除できます。

if (jQuery(control).data('autocomplete')) {
  jQuery(control).autocomplete("destroy");
  jQuery(control).removeData('autocomplete');
}
44
Matloob Ali

私が見つけた最も簡単で安全な方法は次のとおりです。

$(control).autocomplete({source: []});

あるいは、前述のように、これも機能します。

$(control).autocomplete("destroy");

コントロールにオートコンプリートハンドラーが設定されていることが確実な場合。

11
Paglian

JQuery UI(1.12)の最新バージョンでは、オートコンプリートデータが存在する場合でも、$(control).data('autocomplete')がtrueを返しません。

代わりに、ui-autocomplete-inputクラスの存在のチェックがtrueを返しました。

以下で十分だと思います。

if ($(control).hasClass('ui-autocomplete-input')) {
   $(control).autocomplete("destroy");
}
3
Vineeth

要素IDによるオートコンプリートを無効にします。

 $("#elementId").autocomplete({
  disabled: true
  });
0
Jared

そのプラグインはそれ自体を<input>にかなりしっかりと結び付けます。それが私のページだったとしたら、同じ「名前」を持つ2つのタグがあり、1つはオートコンプリートがあり、もう1つはありません。それらを切り替えたいときは、一方を無効にして非表示にし、もう一方を有効/表示します。 (editああ、また、フィールドが切り替わるときに、フィールドの値が前後にコピーされることを確認してください)

0
Pointy

「EnableAC」などのクラスを要素に追加すると、そのクラスをオートコンプリートの対象にすることができます。オートコンプリートを完了して無効にしたい場合は、そのクラスを削除します。

しかし、なぜこの機能を無効にしたいのですか?ユーザーが選択を変更したいがオートコンプリートが起動しない場合、ユーザーを混乱させる可能性があります。

0
Rob Allen

$( '#')。autocomplete = null;を試しました。そしてそれは動作します。私はハエの名前の変更を許可していましたが、結果は表示されませんでしたが、現在は表示されています。古い変更されていない名前は、今までは新しい名前が表示されます

0
Gary

プラグインのjsファイルを簡単に見てみました。

Jquery.autocomplete.jsプラグインの初期化中に、元のソース入力を次のように設定するjavascript行(番号21)があるようです。

input.autocompleter = me;

テストせずに、プラグインと元の入力の間のリンクを削除するために、次のように呼び出すことができますか?

$('#<your input id>').autocompleter = null;
0
Brian Scott