slickgrid - 如何在 SlickGrid 单元格编辑器中实现 jQuery 自动完成

标签 slickgrid

我正在设置 SlickGrid 并且需要有一个带有自动完成编辑器的列。
我尝试过修改 TextEditor 或 DateEditor。什么都行不通。

任何人都可以通过使用 TextEditor 作为基础给我一个实现的粗略草图吗?

非常感谢。

最佳答案

我在 slick.editors.js 中做了这个 - 可能有一些错误,但应该可以帮助你开始:

$.extend(true, window, {
    "Slick": {
      "Editors": {
        "Auto": AutoCompleteEditor,
        "Text": TextEditor,
        "Integer": IntegerEditor,
        "Date": DateEditor,
        "YesNoSelect": YesNoSelectEditor,
        "Checkbox": CheckboxEditor,
        "PercentComplete": PercentCompleteEditor,
        "LongText": LongTextEditor
      }
    }
  });

  var availableTags = [
                        "ActionScript",
                        "AppleScript",
                        "Asp",
                        "BASIC",
                        "C",
                        "C++",
                        "Clojure",
                        "COBOL",
                        "ColdFusion",
                        "Erlang",
                        "Fortran",
                        "Groovy",
                        "Haskell",
                        "Java",
                        "JavaScript",
                        "Lisp",
                        "Perl",
                        "PHP",
                        "Python",
                        "Ruby",
                        "Scala",
                        "Scheme"
                      ];

   function AutoCompleteEditor(args) {
     var $input;
     var defaultValue;
     var scope = this;
     var calendarOpen = false;

     this.init = function () {
       $input = $("<INPUT id='tags' class='editor-text' />");
       $input.appendTo(args.container);
       $input.focus().select();
       $input.autocomplete({
            source: availableTags
        });
     };

     this.destroy = function () {
       $input.autocomplete("destroy");
     };

     this.focus = function () {
       $input.focus();
     };

     this.loadValue = function (item) {
       defaultValue = item[args.column.field];
       $input.val(defaultValue);
       $input[0].defaultValue = defaultValue;
       $input.select();
     };

     this.serializeValue = function () {
       return $input.val();
     };

     this.applyValue = function (item, state) {
       item[args.column.field] = state;
     };

     this.isValueChanged = function () {
       return (!($input.val() == "" && defaultValue == null)) && ($input.val() != defaultValue);
     };

     this.validate = function () {
       return {
         valid: true,
         msg: null
       };
     };

     this.init();
   }

如果这有帮助,请告诉我。

关于slickgrid - 如何在 SlickGrid 单元格编辑器中实现 jQuery 自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11941311/

相关文章:

javascript - 长文本列的复合编辑器的 Slickgrid 问题

javascript - Slickgrid 移动外观

javascript - 如何动态地重新加载任何 slickgrid 数据 View ?

slickgrid - SlickGrid 中的批量编辑(填充/粘贴范围/多行编辑)

javascript - 如何在我的网站上安装 SlickGrid(或任何 jQuery 插件)?

css - 有没有人使用 1 个样式表使 slick grid 正常工作?

css - 如何在 Slickgrids 中自动换行标题栏

javascript - Slickgrid 不会渲染或填充表/网格中的 JSON 数据

jquery - SlickGrid JQuery 插件 - 将数据从一个电子表格复制到同一网页上的第二个电子表格

javascript - 如何在 slickgrid 中拥有静态索引列