Javascript 防止jqueryui菜单焦点
如何防止jQuery UI菜单在单击项时聚焦于菜单 我有一个选择菜单,当点击一个项目时,它立即应用一个动作,然后菜单关闭 因为jQueryUI在点击时触发焦点事件(的第10956行),所以它在Chrome中丢失了选择(Firefox似乎可以工作)Javascript 防止jqueryui菜单焦点,javascript,jquery,jquery-ui,selection,Javascript,Jquery,Jquery Ui,Selection,如何防止jQuery UI菜单在单击项时聚焦于菜单 我有一个选择菜单,当点击一个项目时,它立即应用一个动作,然后菜单关闭 因为jQueryUI在点击时触发焦点事件(的第10956行),所以它在Chrome中丢失了选择(Firefox似乎可以工作) 。。。 }else如果(!this.element.is(“:focus”)){ //将焦点重定向到菜单 this.element.trigger(“focus”,[true]);//您可以采取的一种方法是为需要实现的特定方法/属性使用自定义值来扩展j
。。。
}else如果(!this.element.is(“:focus”)){
//将焦点重定向到菜单
this.element.trigger(“focus”,[true]);//您可以采取的一种方法是为需要实现的特定方法/属性使用自定义值来扩展jquery.ui.menu原型。您可以创建一个新的小部件,在jquery中使用$.extend来实现这一点。下面是一个扩展菜单小部件以使其使用表单输入的好例子(克里斯·博切斯著):
演示页面如下:
脚本是这样定义的
//这是jQueryUI的核心库
//这是扩展默认菜单小部件的自定义输入菜单小部件
三,。
评估此模式以扩展默认菜单小部件:
/*
* jQuery UI Input Menu Extension
*
* Copyright 2010, Kris Borchers
* Dual licensed under the MIT or GPL Version 2 licenses.
*
* http://github.com/kborchers/jquery-ui-extensions
*/
(function( $ ) {
**var proto = $.ui.menu.prototype,
originalRefresh = proto.refresh;
$.extend( proto, {**
refresh: function() {
originalRefresh.call( this );
var that = this;
......
...
..
.
请参见此处的github源代码:
如果您遵循此模式,您可以定制任何小部件以满足您的需要
希望这有帮助
Chris您可以采取的一种方法是使用需要实现的特定方法/属性的自定义值来扩展jquery.ui.menu原型。您可以创建一个新的小部件,在jquery中使用$.extend来实现这一点。下面是一个扩展菜单小部件以使用表单输入(由Kris Borchers编写)的好例子:
演示页面如下:
脚本是这样定义的
//这是jQueryUI的核心库
//这是扩展默认菜单小部件的自定义输入菜单小部件
三,。
评估此模式以扩展默认菜单小部件:
/*
* jQuery UI Input Menu Extension
*
* Copyright 2010, Kris Borchers
* Dual licensed under the MIT or GPL Version 2 licenses.
*
* http://github.com/kborchers/jquery-ui-extensions
*/
(function( $ ) {
**var proto = $.ui.menu.prototype,
originalRefresh = proto.refresh;
$.extend( proto, {**
refresh: function() {
originalRefresh.call( this );
var that = this;
......
...
..
.
请参见此处的github源代码:
如果您遵循此模式,您可以定制任何小部件以满足您的需要
希望这有帮助
Chris我的快速解决方案是setTimeout
0并进行聚焦。
setTimeout会触发菜单,使其聚焦回自身,
因此,如果您在设置超时前对焦,它将调回菜单
setTimeout(function(){
$('#input-id').focus();
},0);
另一个快速修复方法是以编程方式在任意位置单击,
这将取消菜单本身的焦点
$(document).click();
or
$('#input-id').click();
我的快速解决方案是setTimeout
0并进行聚焦。
setTimeout会触发菜单,使其聚焦回自身,
因此,如果您在设置超时前对焦,它将调回菜单
setTimeout(function(){
$('#input-id').focus();
},0);
另一个快速修复方法是以编程方式在任意位置单击,
这将取消菜单本身的焦点
$(document).click();
or
$('#input-id').click();
您的html和代码仍然会有帮助,菜单的代码和其他任何代码我都没有尝试,但是$(“.selector”).menu({focus:function(){return false;})呢你的html和代码仍然会有帮助,菜单的代码和其他任何代码我都没有尝试,但是$(“.selector”).menu({focus:function(){return false;}}})怎么样呢?不管怎样,你可以为问题做一个JSFIDLE,会有很大帮助。