select .js关于无结果插件和允许默认链接行为的问题
selectize.js questions about a no result plugin and allowing default behaviour on link
我使用的是一个自动建议字段的选择,我已经使用了no_results插件之一,当没有结果时显示一个链接,这在大多数情况下都很有效,但我有一些戏剧我只是不确定如何绕过
我有两件事需要帮助
第一个最重要的-如何传递变量给插件我有几个页面上选择的多个实例,所以我需要传递vars hr_link和hr_label到插件,所以我不需要重新创建插件30次,只是这些vars不同的
2nd -允许链接被点击,绕过默认行为为了使链接可点击,我已经使用了onmousedown()和touchstart(),但是是否有更好的方法来重新启用默认单击结果框中的这个链接。
我花了很多时间研究这些物品,所以我不认为它是重复的
//The Plugin
Selectize.define('header_no_results', function( options ) {
var KEY_LEFT = 37;
var KEY_UP = 38;
var KEY_RIGHT = 39;
var KEY_DOWN = 40;
var ignoreKeys = [KEY_LEFT, KEY_UP, KEY_RIGHT, KEY_DOWN];
var self = this;
var hr_link = 'http://link_to_info.com';
var hr_label = 'country';
options = $.extend({
message: ' No results found: <a href="#" onmousedown="window.open('''+hr_link+'''); return false;" touchstart="window.open('''+hr_link+'''); return false;"> click here </a> to add a'+hr_label,
html: function(data) {
return '<div class="selectize-dropdown-content">' + data.message + '</div>';
}
}, options );
self.on('type', function() {
var message = 'Not Found: <a href="#" onmousedown="window.open('''+hr_link+'''); return false;" touchstart="window.open('''+hr_link+'''); return false;"> click here </a> Add a '+hr_label;
if (!self.hasOptions) {
self.$empty_results_container.html(message).show();
} else {
self.$empty_results_container.hide();
}
});
self.onKeyUp = (function() {
var original = self.onKeyUp;
return function ( e ) {
if (ignoreKeys.indexOf(e.keyCode) > -1) return;
self.isOpen = false;
original.apply( self, arguments );
}
})();
self.onBlur = (function () {
var original = self.onBlur;
return function () {
original.apply( self, arguments );
self.$empty_results_container.hide();
};
})();
self.setup = (function() {
var original = self.setup;
return function() {
original.apply( self, arguments);
self.$empty_results_container = $(
options.html($.extend({
classNames: self.$input.attr( 'class' )
}, options))
);
self.$empty_results_container.hide();
self.$dropdown.append(self.$empty_results_container);
};
})();
});
//调用插件的函数
$('#companyLinks').selectize({
valueField: 'id',
labelField: 'display',
searchField: 'display',
maxItems: 1,
options: [],
create: false,
onItemAdd: function(value){
window.location.href = 'http://my_link.com/'+value;
},
load: function(query, callback) {
if (!query.length) return callback();
$.ajax({
url: 'http://link.com/get/list',
type: 'GET',
dataType: 'json',
data: {
q: query
},
error: function() {
callback();
},
success: function(res) {
callback(res);
//window.open($(res).val(), '_self');
}
});
},
plugins: ['header_no_results']
});
传递var的解决方案并不那么困难,毕竟只需要在正确的位置查找,这里有进一步的信息
在函数中我们需要改变
plugins: ['header_no_results']
plugins: { "header_no_results": {
link : "page/location",
} }
然后我们可以检索link并通过
声明我们在插件中需要的varvar hr_link = options.link;
相关文章:
- 使用JavaScript从超链接加载时的默认下拉值
- 删除默认的ui超链接行为
- 在 Chrome 中打开电子邮件中的网址/链接,而不是默认浏览器 IE8
- 使用 jquery 逐个链接启用默认行为
- 在页面加载时创建/设置活动的默认链接,但在单击其他链接时删除活动链接
- 在阻止默认操作时启用菜单的链接
- 为什么不是't这会阻止默认链接
- 取消绑定 e.prevent默认 从另一个函数转发到链接单击
- 替换超链接默认操作以加载 AJAX 请求
- 我想使用 javascript 将第一个链接保留为默认选择
- 如何在 RaphaelJS 中根据需要为文本创建默认属性并链接其他属性
- CD上的本地html文件可以打开带有默认程序的链接
- 如何设置要在 NicEdit 的新窗口中打开的链接的默认值
- iPad 阻止仅在首次单击链接时执行默认操作
- 在链接回以前访问过的页面时设置默认值
- 防止默认在花哨框的锚链接上不起作用
- 我想要一个 jquery 日期选择器将默认日期更改为超链接中的文本
- select .js关于无结果插件和允许默认链接行为的问题
- 如果单击链接内部的元素,如何防止默认链接行为
- 如何删除JS文本/模板中的默认链接