gpt4 book ai didi

jquery - 自动完成组合框 Slickgrid 自定义编辑器不完全有效

转载 作者:行者123 更新时间:2023-12-01 03:47:23 24 4
gpt4 key购买 nike

我正在尝试在最新版本的 SlickGrid 中创建自定义自动完成组合框编辑器。组合框的主要目的是根据用户键入的文本显示结果,并且还将包含一个向下箭头链接按钮,该按钮使用户能够通过向“autoComplete”函数传递空白参数来查看所有结果。这是link您可以查看我尝试在 SlickGrid 中创建的自定义编辑器。 (请忽略“显示底层选择”按钮)

我能够根据用户输入获得建议,并且列字段的右侧放置了一个小箭头链接按钮,该按钮应该显示 [availableTags] 数组中的所有项目。当我单击箭头时,它不会列出基本上没有按预期响应的所有项目。但是,如果用户键入与列表中的一项匹配的内容,则意味着小部件已打开,单击箭头按钮后,它将关闭,但不会显示所有项目的列表。我想我在 DOM 处理方面做错了什么。任何帮助将不胜感激。

这是创建列的源代码。

    var columns = [
{id: "TestAuto", name: "Auto Complete", field: "TestAuto", minWidth:100,width:150, editor: Slick.Editors.Auto}
];

这是自定义编辑器代码:

$.extend(true, window, {
"Slick": {
"Editors": {
"Auto": AutoCompleteEditor,
"Text": TextEditor,
"Integer": IntegerEditor,
"Date": DateEditor,
"YesNoSelect": YesNoSelectEditor,
"Checkbox": CheckboxEditor,
"PercentComplete": PercentCompleteEditor,
"LongText": LongTextEditor,
"Combo": ComboTest
}
}
});
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.width($(args.container).innerWidth() - 25);
$input.appendTo(wrapper);


$( "<a>" )
.attr( "tabIndex", -1 )
.attr( "title", "Show All Items" )
.appendTo( wrapper )
.button({
icons: {
primary: "ui-icon-triangle-1-s"
},
text: false
})
.removeClass( "ui-corner-all" )
.addClass( "ui-corner-right ui-combobox-toggle" )

.click(function() {

// close if already visible
if ( $input.autocomplete( "widget" ).is( ":visible" ) ) {
$input.autocomplete( "close" );
return;
}

// work around a bug (likely same cause as #5265)
$( this ).blur();

// pass empty string as value to search for, displaying all results
$input.autocomplete( "search", "" );

$input.focus();
});

$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();
}

最佳答案

我发布这个问题后不久,终于找到了解决方案。为了显示建议框中列出的所有项目,必须在输入的 autoComplete 定义中将 minLength 设置为 0。

$input.autocomplete({
delay: 0,
minLength: 0, //has to be 0 to bring all items in case the search contains empty string.
source: availableTags
});

对那些长期以来一直在寻找此类问题解决方案的人表示抱歉。

关于jquery - 自动完成组合框 Slickgrid 自定义编辑器不完全有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12149847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com