所有
我在JQuery UI对话框中使用JQuery Autocomplete Plugin 1.0.2。不幸的是,在IE和FireFox中有 2个导致脚本错误的方案。我将提供FireFox Firebug错误,因为它们更具描述性。
首先,这里是JQuery Autocomplete脚本,它允许选择多个名称:
var queues = <% Html.RenderAction("AvailableQueues"); %>;
$($.jqId("requestQueuesText"), $theForm).autocomplete(queues, {
minChars: 1,
formatItem: function(row) {
return row.Description;
},
multiple: true,
multipleSeparator: ";"
});
现在,以下是导致错误发生的两种情况:
1)在其他任何事情之前键入一个空格“”我立即得到
错误: currentValue未定义; onChange()jquery.a ... mplete.js(第239行); [打破此错误] if(currentValue.length&gt; = options.minChars){
2)在自动填充下拉列表打开时关闭对话框,但不选择项目
* 这是我应该修复的报告错误。对话框关闭后,自动完成框将在几毫秒到几秒的任何时间内保持在视图中。主要目标是在对话框关闭的同时自动完成下拉菜单关闭,而不返回任何错误。我打赌,解决错误将解决整体问题。
错误:未捕获异常:[例外...“组件返回失败代码:0x80004005(NS_ERROR_FAILURE)[nsIDOMNSHTMLTextAreaElement.setSelectionRange]”nsresult:“0x80004005(NS_ERROR_FAILURE)”位置:“JS框架: :http://localhost:2659/Scripts/jquery.autocomplete.js :: anonymous :: line 752“data:no]
仅仅通过查看autocomplete documentation,我发现我可能需要以不同方式使用 formatItem 选项。
另外,我遇到了BGIFRAME,它看起来可能会以这种或那种方式提供帮助。
提前感谢您的任何帮助!
答案 0 :(得分:1)
我能够通过将keydown事件链接到自动完成代码来解决第一个问题:
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));
});
这会在最初输入文本区域时禁止使用空格,并且还会在分号(multipleSeparator)之后阻止空白。
仍然遇到#2的问题。我想我需要在关闭属性或 $('a.close-trigger')上添加悬停或点击事件,这将从文本中删除focus()区域反过来强制自动完成下拉列表消失...还不知道如何使用以下对话框代码完成该操作:
$(".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);
});
});