0
jQueryUI 자동 완성이 현재 포커스가있는 항목을 선택하고 메뉴를 닫지 못하게하려면 Enter 키를 누르면 특히 상호 작용을 방지하고 싶습니다.jQueryUI 자동 완성의 기본 키보드 상호 작용을 방지하는 방법은 무엇입니까?
나는 다음과 같은 문서를 말하는 겁니다 : http://api.jqueryui.com/autocomplete/#event-change
jQueryUI 자동 완성이 현재 포커스가있는 항목을 선택하고 메뉴를 닫지 못하게하려면 Enter 키를 누르면 특히 상호 작용을 방지하고 싶습니다.jQueryUI 자동 완성의 기본 키보드 상호 작용을 방지하는 방법은 무엇입니까?
나는 다음과 같은 문서를 말하는 겁니다 : http://api.jqueryui.com/autocomplete/#event-change
UPDATE :
원리는 동일합니다. 그냥 대신 양식을 제출 setTimeout
기능을 변경 (여기에서 입증 된 바와 같이 : http://jsfiddle.net/X8Ghc/8/)을
은 UPDATE :
당신이 올바른지, $(this)
은 ui-menu
을 참조로되어 있었다 (그리고 분명히하지 않았다). 새로운 바이올린, http://jsfiddle.net/X8Ghc/7/은 합리적으로 잘 작동합니다.
$(document).ready(function() {
$("#autocomplete").autocomplete({
"open": function(e, ui) {
//using the 'open' event to capture the originally typed text
var self = $(this),
val = self.val();
//saving original search term in 'data'.
self.data('searchTerm', val);
},
"select": function(e, ui) {
var self = $(this),
keyPressed = e.keyCode,
keyWasEnter = e.keyCode === 13,
useSelection = true,
val = self.data('searchTerm');
if (keyPressed) {
if (keyWasEnter) {
useSelection = false;
e.preventDefault();
window.setTimeout(function() {
//since there is apparently no way to prevent this
//contemptible menu from closing, re-open the menu
//using the original search term after this handler
//finishes executing (using 'setTimeout' with a delay
//of 0 milliseconds).
self.val(val);
self.autocomplete('search', val);
}, 0);
}
}
return useSelection;
},
"source": ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"]
});
});
원본 :
이 a fiddle 작동합니다
$(document).ready(function() {
$("#autocomplete").autocomplete({
"select": function(e, ui) {
var keyPressed = e.keyCode,
keyWasEnter = e.keyCode === 13,
useSelection = true;
console.log(e);
if (keyPressed) {
if (keyWasEnter) {
useSelection = false;
$(this).open(e, ui);
}
}
return useSelection;
},
"source": ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby"]
});
});
흠, 나는 절단하고 붙여 넣을 때 '선택 기능()'내 애플 리케이션에 난 다음 받고 있어요 error 'Uncaught TypeError : Object [object Object]에'open '메서드가 없습니다. '$ (this) '는 무엇입니까? 제 생각에는 광산이'$ ('autocomplete')' –
@timpeterson을 가리키고 있다고 생각하는 반면에, 'ui-menu'를 참조하면 안됩니다 : 죄송합니다. :) 대답과 바이올린이 업데이트되었습니다. 수정을 위해 – pete
주셔서 감사합니다. 미안해. 내가 분명하지 않은 것 같아. 내가 싫어하는 것은 "현재 집중된 항목을 선택"으로 돌아 오는 것입니다. 나는 입력 상자에 무엇이든지 게시하는 폼을 제출하기 위해 리턴 값을 내고 싶다. (ui-menu에서 선택된 것은 아니다). 나는 UI 메뉴가 열려 있는지 여부에 덜 관심이있다. 이 오류가 계속 발생합니다. 'Uncaught TypeError : jQuery.autocomplete.js에있는'undefined' 속성 'value'을 읽을 수 없습니다. –