Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.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
Javascript 默认选项卡导航在Mozilla中不起作用_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript 默认选项卡导航在Mozilla中不起作用

Javascript 默认选项卡导航在Mozilla中不起作用,javascript,jquery,html,css,Javascript,Jquery,Html,Css,在Mozilla Firefox浏览器中,选项卡按钮的正常导航会被此文本框卡住。按Tab键时,它不会移动到下一个元素。在IE和Chrome中工作良好。有人能帮我修一下吗 <div class="editor-field"> <div> <input id="Rentaljeepshop" class="ui-autocomplete-input" type="text" value="Budget Rent A Car" name="R

在Mozilla Firefox浏览器中,选项卡按钮的正常导航会被此文本框卡住。按Tab键时,它不会移动到下一个元素。在IE和Chrome中工作良好。有人能帮我修一下吗

 <div class="editor-field">
      <div>
        <input id="Rentaljeepshop" class="ui-autocomplete-input" type="text" value="Budget Rent A Car" name="Rentaljeepshop" maxlength="50" isautocomplete="true" autocomplete="off" role="textbox" aria-autocomplete="list" aria-haspopup="true"></input>
/div>
</div>

/div>
我的Jquery是:

(function( $, undefined ) {

$.widget( "ui.autocomplete", {
    options: {
        appendTo: "body",
        delay: 300,
        minLength: 1,
        position: {
            my: "left top",
            at: "left bottom",
            collision: "none"
        },
        source: null
    },
    _create: function() {
        var self = this,
            doc = this.element[ 0 ].ownerDocument;
        this.element
            .addClass( "ui-autocomplete-input" )
            .attr( "autocomplete", "off" )
            // TODO verify these actually work as intended
            .attr({
                role: "textbox",
                "aria-autocomplete": "list",
                "aria-haspopup": "true"
            })
            .bind( "keydown.autocomplete", function( event ) {
                if ( self.options.disabled ) {
                    return;
                }

                var keyCode = $.ui.keyCode;
                switch( event.keyCode ) {
                case keyCode.PAGE_UP:
                    self._move( "previousPage", event );
                    break;
                case keyCode.PAGE_DOWN:
                    self._move( "nextPage", event );
                    break;
                case keyCode.UP:
                    self._move( "previous", event );
                    // prevent moving cursor to beginning of text field in some browsers
                    event.preventDefault();
                    break;
                case keyCode.DOWN:
                    self._move( "next", event );
                    // prevent moving cursor to end of text field in some browsers
                    event.preventDefault();
                    break;
                case keyCode.ENTER:
                case keyCode.NUMPAD_ENTER:
                    // when menu is open or has focus
                    if ( self.menu.element.is( ":visible" ) ) {
                        event.preventDefault();
                    }
                    //passthrough - ENTER and TAB both select the current element
                case keyCode.TAB:
                    if ( !self.menu.active ) {
                        return;
                    }
                    self.menu.select( event );
                    break;
                case keyCode.ESCAPE:
                    self.element.val( self.term );
                    self.close( event );
                    break;
                default:
                    // keypress is triggered before the input value is changed
                    clearTimeout( self.searching );
                    self.searching = setTimeout(function() {
                        // only search if the value has changed
                        if ( self.term != self.element.val() ) {
                            self.selectedItem = null;
                            self.search( null, event );
                        }
                    }, self.options.delay );
                    break;
                }
            })
            .bind( "focus.autocomplete", function() {
                if ( self.options.disabled ) {
                    return;
                }

                self.selectedItem = null;
                self.previous = self.element.val();
            })
            .bind( "blur.autocomplete", function( event ) {
                if ( self.options.disabled ) {
                    return;
                }

                clearTimeout( self.searching );
                // clicks on the menu (or a button to trigger a search) will cause a blur event
                self.closing = setTimeout(function() {
                    self.close( event );
                    self._change( event );
                }, 150 );
            });
        this._initSource();
        this.response = function() {
            return self._response.apply( self, arguments );
        };

            this.menu.element.hide();this.menu = $( "<ul></ul>" )
            .addClass( "ui-autocomplete" )
            .appendTo( $( this.options.appendTo || "body", doc )[0] )
            // prevent the close-on-blur in case of a "slow" click on the menu (long mousedown)
            .mousedown(function( event ) {
                // clicking on the scrollbar causes focus to shift to the body
                // but we can't detect a mouseup or a click immediately afterward
                // so we have to track the next mousedown and close the menu if
                // the user clicks somewhere outside of the autocomplete
                var menuElement = self.menu.element[ 0 ];
                if ( event.target === menuElement ) {
                    setTimeout(function() {
                        $( document ).one( 'mousedown', function( event ) {
                            if ( event.target !== self.element[ 0 ] &&
                                event.target !== menuElement &&
                                !$.ui.contains( menuElement, event.target ) ) {
                                self.close();
                            }
                        });
                    }, 1 );
                }

                // use another timeout to make sure the blur-event-handler on the input was already triggered
                setTimeout(function() {
                    clearTimeout( self.closing );
                }, 13);
            })
            .menu({
                focus: function( event, ui ) {
                    var item = ui.item.data( "item.autocomplete" );
                    if ( false !== self._trigger( "focus", null, { item: item } ) ) {
                        // use value to match what will end up in the input, if it was a key event
                        if ( /^key/.test(event.originalEvent.type) ) {
                            self.element.val( item.value );
                        }
                    }
                },
                selected: function( event, ui ) {
                    var item = ui.item.data( "item.autocomplete" ),
                        previous = self.previous;

                    // only trigger when focus was lost (click on menu)
                    if ( self.element[0] !== doc.activeElement ) {
                        self.element.focus();
                        self.previous = previous;
                    }

                    if ( false !== self._trigger( "select", event, { item: item } ) ) {
                        self.element.val( item.value );
                    }

                    self.close( event );
                    self.selectedItem = item;
                },
                blur: function( event, ui ) {
                    // don't set the value of the text field if it's already correct
                    // this prevents moving the cursor unnecessarily
                    if ( self.menu.element.is(":visible") &&
                        ( self.element.val() !== self.term ) ) {
                        self.element.val( self.term );
                    }
                }
            })
            .zIndex( this.element.zIndex() + 1 )
            // workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781
            .css({ top: 0, left: 0 })
            .hide()
            .data( "menu" );
        if ( $.fn.bgiframe ) {
             this.menu.element.bgiframe();
        }
    },

    destroy: function() {
        this.element
            .removeClass( "ui-autocomplete-input" )
            .removeAttr( "autocomplete" )
            .removeAttr( "role" )
            .removeAttr( "aria-autocomplete" )
            .removeAttr( "aria-haspopup" );
        this.menu.element.remove();
        $.Widget.prototype.destroy.call( this );
    },
(函数($,未定义){
$.widget(“ui.autocomplete”{
选项:{
附:“身体”,
延误:300,
最小长度:1,
职位:{
我的:“左上”,
在“左下角”,
碰撞:“无”
},
来源:空
},
_创建:函数(){
var self=这个,
doc=this.element[0]。所有者文档;
这个元素
.addClass(“ui自动完成输入”)
.attr(“自动完成”、“关闭”)
//要验证这些功能是否按预期工作
艾特先生({
角色:“文本框”,
“咏叹调自动完成”:“列表”,
“aria haspopup”:“真”
})
.bind(“keydown.autocomplete”),函数(事件){
如果(self.options.disabled){
返回;
}
var keyCode=$.ui.keyCode;
开关(event.keyCode){
case keyCode.PAGE\u UP:
自我移动(“上一页”,事件);
打破
case keyCode.PAGE_向下:
自我移动(“下一页”,事件);
打破
case keyCode.UP:
自我移动(“先前”,事件);
//在某些浏览器中,防止将光标移动到文本字段的开头
event.preventDefault();
打破
case keyCode.DOWN:
自我移动(“下一步”,事件);
//在某些浏览器中,防止将光标移动到文本字段的末尾
event.preventDefault();
打破
case keyCode.ENTER:
case keyCode.NUMPAD\u输入:
//当菜单打开或有焦点时
if(self.menu.element.is(“:visible”)){
event.preventDefault();
}
//passthrough-ENTER和TAB都选择当前元素
case keyCode.TAB:
如果(!self.menu.active){
返回;
}
self.menu.select(事件);
打破
case keyCode.ESCAPE:
self.element.val(self.term);
自我关闭(事件);
打破
违约:
//更改输入值前会触发按键
clearTimeout(自搜索);
self.search=setTimeout(函数(){
//仅当值已更改时进行搜索
if(self.term!=self.element.val()){
self.selectedItem=null;
self.search(null,事件);
}
},self.options.delay);
打破
}
})
.bind(“focus.autocomplete”,函数(){
如果(self.options.disabled){
返回;
}
self.selectedItem=null;
self.previous=self.element.val();
})
.bind(“blur.autocomplete”,函数(事件){
如果(self.options.disabled){
返回;
}
clearTimeout(自搜索);
//单击菜单(或触发搜索的按钮)将导致模糊事件
self.closing=setTimeout(函数(){
自我关闭(事件);
自我改变(事件);
}, 150 );
});
这个。_initSource();
this.response=函数(){
返回self.\u response.apply(self,arguments);
};
this.menu.element.hide();this.menu=$(“
    ”) .addClass(“ui自动完成”) .appendTo($(this.options.appendTo | | |“body”,doc)[0]) //防止在菜单上出现“慢速”点击时关闭模糊(长鼠标向下) .mousedown(函数(事件){ //单击滚动条会使焦点转移到主体 //但我们无法立即检测到鼠标移动或点击 //因此,我们必须跟踪下一个鼠标向下移动并关闭菜单(如果需要) //用户单击自动完成之外的某个位置 var menuElement=self.menu.element[0]; if(event.target==菜单元素){ setTimeout(函数(){ $(文档).1('mousedown',函数(事件){ if(event.target!==self.element[0]&& event.target!==菜单元素&& !$.ui.contains(menuElement,event.target)){ self.close(); } }); }, 1 ); } //使用另一个超时以确保已触发输入上的模糊事件处理程序 setTimeout(函数(){ clearTimeout(自动关闭); }, 13); }) .菜单({ 焦点:功能(事件、用户界面){ var item=ui.item.data(“item.autocomplete”); if(false!==self.\u触发器(“焦点”,null,{item:item})){ //如果是关键事件,则使用值匹配输入中的结果 如果(/^
    case keyCode.TAB:
     if ( !self.menu.active ) {
     return;
     }
     self.menu.select( event );
     break;