사용자가 Ctrl+ S를 눌러 양식을 저장하려고합니다. Ctrl+ S키 조합 을 캡처하고 양식을 제출 하는 브라우저 간 좋은 방법이 있습니까?
앱은 Drupal을 기반으로하기 때문에 jQuery를 사용할 수 있습니다.
답변
$(window).keypress(function(event) {
if (!(event.which == 115 && event.ctrlKey) && !(event.which == 19)) return true;
alert("Ctrl-S pressed");
event.preventDefault();
return false;
});
키 코드는 브라우저마다 다를 수 있으므로 115 개 이상을 확인해야 할 수도 있습니다.
답변
이것은 jquery를 사용하여 Ctrl+ S, Ctrl+ F및 Ctrl+ 를 오버로드하는 데 효과적입니다 G.
$(window).bind('keydown', function(event) {
if (event.ctrlKey || event.metaKey) {
switch (String.fromCharCode(event.which).toLowerCase()) {
case 's':
event.preventDefault();
alert('ctrl-s');
break;
case 'f':
event.preventDefault();
alert('ctrl-f');
break;
case 'g':
event.preventDefault();
alert('ctrl-g');
break;
}
}
});
답변
바로 가기 라이브러리 를 사용하여 브라우저 별 항목을 처리 할 수 있습니다 .
shortcut.add("Ctrl+S",function() {
alert("Hi there!");
});
답변
이 jQuery 솔루션은 Chrome 및 Firefox에서 Ctrl+ S및 Cmd+ 모두 작동합니다 S.
$(document).keydown(function(e) {
var key = undefined;
var possible = [ e.key, e.keyIdentifier, e.keyCode, e.which ];
while (key === undefined && possible.length > 0)
{
key = possible.pop();
}
if (key && (key == '115' || key == '83' ) && (e.ctrlKey || e.metaKey) && !(e.altKey))
{
e.preventDefault();
alert("Ctrl-s pressed");
return false;
}
return true;
});
답변
이것은 몇 가지 이유에 대한 … 크롬에 나를 위해 일 event.which
하지 않도록, 나를 위해 반환 자본 S (83) 왜 (에 관계없이 캡의 상태가 잠금) 내가 사용 그렇게 fromCharCode
하고 toLowerCase
단지 안전을 위해
$(document).keydown(function(event) {
//19 for Mac Command+S
if (!( String.fromCharCode(event.which).toLowerCase() == 's' && event.ctrlKey) && !(event.which == 19)) return true;
alert("Ctrl-s pressed");
event.preventDefault();
return false;
});
누구든지 83이 아닌 115를 얻는 이유를 알고 있다면 , 기뻐할 것입니다. 다른 브라우저에서 이것을 테스트하면 작동하는지 아닌지 기뻐할 것입니다.
답변
FireFox, IE 및 Chrome을 지원하기 위해 몇 가지 옵션을 결합했습니다. Mac을 더 잘 지원하도록 업데이트했습니다.
// simply disables save event for chrome
$(window).keypress(function (event) {
if (!(event.which == 115 && (navigator.platform.match("Mac") ? event.metaKey : event.ctrlKey)) && !(event.which == 19)) return true;
event.preventDefault();
return false;
});
// used to process the cmd+s and ctrl+s events
$(document).keydown(function (event) {
if (event.which == 83 && (navigator.platform.match("Mac") ? event.metaKey : event.ctrlKey)) {
event.preventDefault();
save(event);
return false;
}
});
답변
웹 응용 프로그램이 기본 바로 가기 키를 정직하게 무시하지 않기를 바랍니다. Ctrl+ S이미 브라우저에서 무언가를합니다. 내가보고있는 사이트에 따라 갑자기 변경되는 것은 종종 버그가있는 것은 말할 것도없고 혼란스럽고 실망스러운 일입니다. 내가 사이트를 공중 납치 했어 Ctrl+ Tab이 같은 모습 때문에 Ctrl+ I두 사이트에 내 작품을 망치고 평소대로 탭을 전환에서 저를 방지.
바로 가기 키를 원하면 accesskey
속성을 사용하십시오 . 기존 브라우저 기능을 중단하지 마십시오.
