如何在添加到元素后删除自动完成?

时间:2010-06-23 13:57:08

标签: jquery autocomplete

将自动填充添加到以下元素之后:

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

有没有办法可以禁用它或动态删除元素的自动完成功能?

我正在使用Dylan Verheul的修改过的jquery自动完成插件。 http://www.pengoworks.com/workshop/jquery/autocomplete_docs.txt

8 个答案:

答案 0 :(得分:44)

您可以使用以下代码行删除自动填充行为:

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

答案 1 :(得分:11)

我找到的最简单,最安全的方法是:

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

或者,如前所述,这也有效:

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

如果您确定您的控件设置了自动填充处理程序。

答案 2 :(得分:2)

在最新版本的jQuery UI(1.12)中,即使存在自动填充数据,import sys import tkinter from tkinter import* import time global v global popJ popJ = 0 def genInput(): #Allows the user to input the data gen = Toplevel() gen.wm_title("Data Input") v = IntVar() ent1 = Entry(gen, textvariable = v).pack() ent1Txt = Label(gen, text = 'Please input Juvenile Populations') ent1Txt.pack() v2 = StringVar() ent2 = Entry(gen, textvariable = v2) ent2Txt = Label(gen, text = 'Please input Adult Populations') ent2.pack() ent2Txt.pack() v3 = StringVar() ent3 = Entry(gen, textvariable = v3) ent3Txt = Label(gen, text = 'Please input Senile Populations') ent3.pack() ent3Txt.pack() v4 = StringVar() ent4 = Entry(gen, textvariable = v4) ent4Txt = Label(gen, text = 'Please input Survival rates for Juveniles') ent4.pack() ent4Txt.pack() v5 = StringVar() ent5 = Entry(gen, textvariable = v5) ent5Txt = Label(gen, text = 'Please input Survival rates for Adults') ent5.pack() ent5Txt.pack() v6 = StringVar() ent6 = Entry(gen, textvariable = v6) ent6Txt = Label(gen, text = 'Please input Survival rates for Seniles') ent6.pack() ent6Txt.pack() v7 = StringVar() ent7 = Entry(gen, textvariable = v7) ent7Txt = Label(gen, text = 'Please input the birth rate') ent7.pack() ent7Txt.pack() v8 = StringVar() ent8 = Entry(gen, textvariable = v8) ent8Txt = Label(gen, text = 'Number of Generations') ent8.pack() ent8Txt.pack() def quit1(): # Needs to be here or it breaks the program gen.destroy() return def submit(): global popJ popJ = v.get() popJtxt = Label(gen, text= v.get()).pack() return submit1= Button(gen, text="Submit") submit1.pack() submit1.configure(command = submit) return1 = Button(gen, text = 'Return to Menu') return1.pack(pady=30) return1.configure(command = quit1) return def genView(): # should display the data disp = Toplevel() disp.wm_title('Displaying data Values') popJuvenilesTxt = Label (disp, text = popJ) popJuvenilesTxt.grid(row =1, column = 1) def menu(): # creates the gui menu menu = Tk() menu.wm_title("Greenfly model") genInp = Button(menu,text = "Set Generation Values") genVew = Button(menu,text = 'Dysplay Generation Values') modelCal = Button(menu,text = 'Run model') exportData = Button(menu,text = 'Export Data') quitProgram = Button(menu,text = 'Quit') genTxt = Label(menu, text= 'Input the Generation values') genvTxt = Label (menu, text = 'View the current generation values') modelTxt = Label (menu, text = 'Run the model') exportTxt = Label (menu, text = 'Export data') quitTxt = Label (menu, text= 'Exit the program') genInp.grid(row=1, column=1) genVew.grid(row=2, column=1) modelCal.grid(row=3, column=1) exportData.grid(row=4 , column=1) quitProgram.grid(row=5, column=1) genTxt.grid(row=1, column = 2) genvTxt.grid(row=2, column = 2) modelTxt.grid(row=3, column = 2) exportTxt.grid(row=4, column = 2) quitTxt.grid(row=5, column = 2) genInp.configure(command = genInput) genVew.configure(command = genView) menu.mainloop() menu() 也不会返回true。

相反,检查$(control).data('autocomplete')类的存在是否返回true。

我相信以下内容应该足够了。

ui-autocomplete-input

答案 3 :(得分:0)

该插件非常紧密地连接到<input>。如果它是我的页面,我想我只有两个带有相同“名称”的标签,一个带有自动完成,一个没有。当我想在它们之间切换时,我会使一个禁用并隐藏,并启用/显示另一个。 (编辑哦,并确保字段的值在切换时来回复制)

答案 4 :(得分:0)

如果您为元素添加类似“EnableAC”的类,则可以将该类作为自动完成的目标。当您完成自动完成并想要禁用它时,您将删除该类。

为什么要禁用此功能?如果用户想要更改他们的选择并且自动填充不会触发,则可能会使用户感到困惑。

答案 5 :(得分:0)

我刚刚简要介绍了插件的js文件。

在初始化jquery.autocomplete.js插件期间似乎有一个javascript行(编号21),它将原始源输入设置为:

input.autocompleter = me;

如果没有测试,也许你可以简单地调用以下内容来删除插件和原始输入之间的链接?

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

答案 6 :(得分:0)

我刚试过 $('#')。autocomplete = null; 它的工作原理。 我允许改变苍蝇的名称,结果不会显示,现在确实如此。 旧的未更改的名称将在此之前显示新的名称

答案 7 :(得分:0)

按元素ID禁用自动完成功能:

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