次のような要素にオートコンプリートを追加した後:
commObj=$("#communityName").autocomplete("auto_commName_backend.php",
{'onItemSelect': handleItemSelect}, {'extraParams': 'ndo' + ndo});
それを無効にしたり、要素のオートコンプリートを動的に削除したりする方法はありますか?
DylanVerheulの変更されたjqueryオートコンプリートプラグインを使用しています。 http://www.pengoworks.com/workshop/jquery/autocomplete_docs.txt
次のコード行を使用して、オートコンプリートの動作を削除できます。
if (jQuery(control).data('autocomplete')) {
jQuery(control).autocomplete("destroy");
jQuery(control).removeData('autocomplete');
}
私が見つけた最も簡単で安全な方法は次のとおりです。
$(control).autocomplete({source: []});
あるいは、前述のように、これも機能します。
$(control).autocomplete("destroy");
コントロールにオートコンプリートハンドラーが設定されていることが確実な場合。
JQuery UI(1.12)の最新バージョンでは、オートコンプリートデータが存在する場合でも、$(control).data('autocomplete')
がtrueを返しません。
代わりに、ui-autocomplete-input
クラスの存在のチェックがtrueを返しました。
以下で十分だと思います。
if ($(control).hasClass('ui-autocomplete-input')) {
$(control).autocomplete("destroy");
}
要素IDによるオートコンプリートを無効にします。
$("#elementId").autocomplete({
disabled: true
});
そのプラグインはそれ自体を<input>
にかなりしっかりと結び付けます。それが私のページだったとしたら、同じ「名前」を持つ2つのタグがあり、1つはオートコンプリートがあり、もう1つはありません。それらを切り替えたいときは、一方を無効にして非表示にし、もう一方を有効/表示します。 (editああ、また、フィールドが切り替わるときに、フィールドの値が前後にコピーされることを確認してください)
「EnableAC」などのクラスを要素に追加すると、そのクラスをオートコンプリートの対象にすることができます。オートコンプリートを完了して無効にしたい場合は、そのクラスを削除します。
しかし、なぜこの機能を無効にしたいのですか?ユーザーが選択を変更したいがオートコンプリートが起動しない場合、ユーザーを混乱させる可能性があります。
$( '#')。autocomplete = null;を試しました。そしてそれは動作します。私はハエの名前の変更を許可していましたが、結果は表示されませんでしたが、現在は表示されています。古い変更されていない名前は、今までは新しい名前が表示されます
プラグインのjsファイルを簡単に見てみました。
Jquery.autocomplete.jsプラグインの初期化中に、元のソース入力を次のように設定するjavascript行(番号21)があるようです。
input.autocompleter = me;
テストせずに、プラグインと元の入力の間のリンクを削除するために、次のように呼び出すことができますか?
$('#<your input id>').autocompleter = null;