Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery在对话框中自动完成错误_Jquery_Asp.net Mvc_Ajax_Jquery Ui_Autocomplete - Fatal编程技术网

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

全部,

我正在JQuery UI对话框中使用JQuery自动完成插件1.0.2。不幸的是,IE和FireFox中有两种情况会导致脚本错误。我将提供FireFox Firebug错误,因为它们更具描述性

首先,这里是JQuery自动完成脚本,它允许选择多个名称:

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插件的字段。有关解决方案的完整示例,请访问。