Keyup 이벤트를 사용할 때 버퍼 텍스트 양식에서 입력 대문자 사용자 지정
keypress는 keydown 이후에 실행되므로 keydown 이벤트를 선택했습니다.
function ucwords(string, trim = true) {
if (string == null) {
return '';
}
let str = string;
if (trim) {
str.trim()
}
return str.toLowerCase().replace(/\b[a-z]/g, function(letter) {
return letter.toUpperCase();
});
};
const inputName = document.getElementById("input-name");
let ctrl;
inputName.addEventListener("keyup", function(e) {
if (e.key == "Control") {
ctrl = "up";
}
});
inputName.addEventListener('keydown', function(e) {
let pattern = /^[^a-zA-Z\s]+$/;
let ceretS = e.target.selectionStart;
if (pattern.test(e.key) === true) {
e.preventDefault();
return false;
}
if (e.code == 'Space' && e.key == ' ' && (this.value.substring(ceretS, ceretS+1) == ' ' || this.value.substring(ceretS, ceretS-1) == ' ')) {
e.preventDefault();
return false;
}
if (e.key == 'Control' || ctrl == 'down' && e.code.indexOf('Key') >= 0) {
ctrl = 'down';
return false;
}
if (e.code.indexOf('Key') >= 0 || e.code == 'Space') {
if (this.value.length > 0 && ceretS == 0 && e.target.selectionEnd == this.value.length) {
return false;
}
this.value = ucwords(this.value.slice(0,ceretS) + e.key + this.value.slice(ceretS), false);
e.target.selectionStart = ceretS+1;
e.target.selectionEnd = ceretS+1;
if (ctrl != 'down') {
e.preventDefault();
return false;
}
}
});
Reference
이 문제에 관하여(Keyup 이벤트를 사용할 때 버퍼 텍스트 양식에서 입력 대문자 사용자 지정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mrtscode/customizing-input-capitalize-from-buffer-text-form-when-using-keyup-event-4043텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)