JQuery在对话框中自动完成错误
全部, 我正在JQuery UI对话框中使用JQuery自动完成插件1.0.2。不幸的是,IE和FireFox中有两种情况会导致脚本错误。我将提供FireFox Firebug错误,因为它们更具描述性 首先,这里是JQuery自动完成脚本,它允许选择多个名称:JQuery在对话框中自动完成错误,jquery,asp.net-mvc,ajax,jquery-ui,autocomplete,Jquery,Asp.net Mvc,Ajax,Jquery Ui,Autocomplete,全部, 我正在JQuery UI对话框中使用JQuery自动完成插件1.0.2。不幸的是,IE和FireFox中有两种情况会导致脚本错误。我将提供FireFox Firebug错误,因为它们更具描述性 首先,这里是JQuery自动完成脚本,它允许选择多个名称: var queues = <% Html.RenderAction("AvailableQueues"); %>; $($.jqId("requestQueuesText"), $theForm).autocomplete(q
var queues = <% Html.RenderAction("AvailableQueues"); %>;
$($.jqId("requestQueuesText"), $theForm).autocomplete(queues, {
minChars: 1,
formatItem: function(row) {
return row.Description;
},
multiple: true,
multipleSeparator: ";"
});
var队列=;
$($.jqId(“requestQueuesText”),$theForm).autocomplete(队列{
明查斯:1,
formatItem:函数(行){
返回行。说明;
},
多重:对,
多重分离器:“;”
});
现在,以下是导致错误发生的两种情况:
1) 在任何其他内容之前键入一个空格“”,我立即获得 错误:当前值未定义;onChange()jquery.a…mplete.js(第239行);[在此错误时中断]如果(currentValue.length>=options.minChars){ 2) 打开“自动完成”下拉列表时关闭对话框,但不选择项目 *这是我应该修复的报告的bug。对话框关闭后,“自动完成”对话框将停留在视图中的任何位置,时间从几毫秒到几秒钟不等。主要目标是让“自动完成”下拉列表在对话框关闭的同时关闭,而不返回任何错误。我敢打赌,解决此问题不会导致错误他将解决整个问题 错误:uncaught exception:[exception…”组件返回故障代码:0x80004005(NS_错误)[nsIDOMNSHTMLTextAreaElement.setSelectionRange]“nsresult:”0x80004005(NS_错误)”位置:“JS帧:::匿名::行752”数据:否]
仅通过查看,我发现可能需要以不同的方式使用formatItem选项 此外,我还遇到了一些问题,这些问题可能在某种程度上有所帮助
提前感谢您的帮助!我通过将按键事件链接到自动完成代码,解决了第一个问题:
var queues = <% Html.RenderAction("AvailableQueues"); %>;
$($.jqId("requestQueuesText"), $theForm).autocomplete(queues, {
minChars: 1,
formatItem: function(row) {
return row.Description;
},
multiple: true,
multipleSeparator: ";",
selectFirst: false
}).keydown(function(event) {
if (this.value != "" && this.value.charAt(this.value.length-1) != ";")
return true;
var keycode = $.browser.msie ? event.keyCode : event.which;
return !/\s/.test(String.fromCharCode(keycode));
});
var队列=;
$($.jqId(“requestQueuesText”),$theForm).autocomplete(队列{
明查斯:1,
formatItem:函数(行){
返回行。说明;
},
多重:对,
多重分隔符:“;”,
selectFirst:false
}).keydown(功能(事件){
if(this.value!=“”&this.value.charAt(this.value.length-1)!=“;”)
返回true;
var keycode=$.browser.msie?event.keycode:event.which;
return!/\s/.test(String.fromCharCode(keycode));
});
这将禁止在最初输入文本区域时使用空格,并防止分号(多重分隔符)后出现空格
#2仍然存在问题。我想我需要在关闭属性或$('a.Close-trigger')上添加一个悬停或单击事件,这将删除焦点()在文本区域中,自动完成下拉列表会随之消失……我还不知道如何使用以下对话框代码来实现这一点:
$(".requestLink").click(function(event) {
event.preventDefault();
var $this = $(this);
$this.addClass("loading");
$.get(this.href, function(data) {
$this.removeClass("loading");
var $req = $("<div></div>").dialog({
autoOpen: true,
height: 650,
width: 750,
modal: true,
title: "Request",
overlay: { "background-color": "#d2d2d2", "opacity": "0.40"}
}).html(data);
});
});
$(.requestLink”)。单击(函数(事件){
event.preventDefault();
var$this=$(this);
$this.addClass(“加载”);
$.get(this.href,函数(数据){
$this.removeClass(“加载”);
变量$req=$(“”)。对话框({
自动打开:对,
身高:650,
宽度:750,
莫代尔:是的,
标题:“请求”,
覆盖:{“背景色”:“#D2D2D2D2”,“不透明度”:“0.40”}
}).html(数据);
});
});
我能够理解我那可笑的问题的第二部分。基本上,我只需要利用对话框的beforeclose事件,让一个方法模糊任何使用autocomplete插件的字段。有关解决方案的完整示例,请访问。