selectize.js - 如何在所选项目后禁用闪烁光标?

时间:2013-09-25 15:59:13

标签: javascript jquery selectize.js

我使用selectize.js设置文本框的样式,并且它工作正常。

$("select[name='somename']").selectize({
  valueField: 'id',
  labelField: 'name',
  searchField: 'name',
  options: selectableThings,
  render: {
    option: function(item, escape) {
      return render(someTemplate, item);
    },
    item: function(item, escape) {
      return render(someTemplate, item);
    }
  }
});

但是我的项目范围有限,并且不希望始终启用光标(闪烁|)。我已经通过the API docs和来源进行了搜索,但找不到任何明显的内容。

是否有内置功能可以禁用闪烁的光标?

编辑最初将此作为禁用输入'但看起来光标不能用于输入(禁用输入仍然显示光标)。

4 个答案:

答案 0 :(得分:10)

Selectize并不是专门设计为仅作为选择装饰者。光标来自<input>元素,允许用户减少选项。当用户键入时,隐藏输入将产生奇怪的行为。此外,当控件为空时,输入用于显示占位符文本。

从技术上讲,你可以用CSS隐藏光标(和输入):

/* option a: make transparent */
.selectize-input input {
    color: transparent !important;
}

/* option b: position off-screen */
.selectize-input input {
    position: absolute !important;
    top: -9999px;
    left: -9999px;
}

但同样,这会让人觉得时髦。我将研究编写一个禁用键盘处理的decorator_only插件,但这不是当务之急。

http://jsfiddle.net/mARDE/1/

答案 1 :(得分:1)

您还可以使用CSS文本缩进将光标移出屏幕:

input {
     text-indent: -100px;
}

答案 2 :(得分:0)

如果要禁用selectize的键盘功能,只需将其输入readonly

$(select).selectize(options);
select.parentNode.querySelector('input').readOnly = true;

答案 3 :(得分:0)

如果要在将selectize用于简单的单项select下拉列表时删除闪烁的输入光标,则需要将已被selectize HTML替换的原始select元素的颜色设置为透明。

#myform select {
    color: transparent;
}