다른 질문의 조언을 따라 왔지만 제대로 작동하지 않습니다. 나는 JQuery 1.8.3과 JQuery UI 1.9.2를 사용하고있다.JQuery UI 1.9.2를 사용하여 자동 완성 SlickGrid 편집기를 만드는 방법
화살표 키를 누르면 자동 완성이 다음 옵션을 선택하지 않는다. 왜?
모든 이벤트 처리기에서 stopPropagation을 시도했습니다. 나는 keypress, keyup, keydown, handlers를 사용했다. 나는 부모 태그에 입력 요소를 싸서 그 이벤트에 stopPropagation을 넣었고 화살표 키는 여전히 자동 완성 요소에서 작동하지 않습니다. 그들은 단지 유효성 검사기 기능이 예방하는 셀을 변경하려고 시도합니다.
$input.bind("keydown.nav", function (e) {function AutoCompleteEditor(args) {
var $input,
defaultValue,
scope = this;
this.init = function() {
$input = $("<INPUT type=text class='editor-text' />");
$input.appendTo(args.container)
.focus()
.select()
.autocomplete({
delay: 0,
minLength: 0,
source: args.column.options
})
.bind("keydown.nav", function (e) {
if (e.keyCode === $.ui.keyCode.LEFT || e.keyCode === $.ui.keyCode.RIGHT) {
e.stopImmediatePropagation();
e.stopPropagation();
} else if (e.keyCode === $.ui.keyCode.UP || e.keyCode === $.ui.keyCode.DOWN) {
e.stopImmediatePropagation();
e.stopPropagation();
}
})
};
this.destroy = function() {
$input.autocomplete('destroy');
$input.remove();
};
this.focus = function() {
$input.focus();
};
this.getValue = function() {
return $input.val();
};
this.setValue = function (val) {
$input.val(val);
};
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() {
var val = $input.val();
return {
valid: args.column.options.indexOf(val) > -1,
msg: null
};
};
this.init();
}
나는 **. ** .bind ("keydown.nav")'를 사용하지 않는다는 것에 유의하십시오. 전체 편집기 코드를 "bind"호출에 넣는 것이 좋은 생각이라고 생각하지 않습니다! 한 가지를 다른 것으로 분리하는 것이 좋습니다. –
그건 작동하지 않습니다. 화살표 키는 결코 자동 완성 위젯을 만들지 않으므로 제안 사항을 선택할 수 없습니다. 이벤트 바인딩에 상관없이 전달 중지는 작동하지 않습니다. –