对于html文本输入元素:
<input type='text'>
您可以禁用Mac OS的双倍空格以在该输入元素中插入句点功能吗?例如,如果我在标准文本输入框中按 a space space b ,则会在之后插入句点a
:
对于某些类型的文本输入(例如代码),即使用户在其系统上启用了功能,也不希望出现此行为
答案 0 :(得分:0)
这是macOS系统设置。在Sierra上,您可以通过取消选中系统偏好设置&gt;将其关闭。键盘&gt;文字&gt;添加具有双倍空间的句点。
答案 1 :(得分:0)
我做了一些深入的研究,到目前为止,我发现通常在输入字段中写入值时,该字段会遇到以下JavaScript事件(按以下顺序):
..,但是当macOS自动用句点替换双倍空格时,这种情况发生在输入字段中的文本紧跟着连续两次在空格键上连续敲击两次(即,输入字段不能为空)时, “ keypress”事件不会触发,只会发生以下事件:
这意味着,即使这可能是一个可怕的解决方案,也可以检测到更改,例如通过监视最后一个action
并在keyup
事件中采取措施(如果前一个事件不是keypress
:
<!DOCTYPE html>
<html lang="en">
<head>
<title>macOS prevent period/full stop on double-space</title>
<meta charset="utf-8">
</head>
<body dir="ltr">
<div>
<input type="text" style="width: 50%;" value="text followed by period. Add double-space after this" autofocus />
</div>
</body>
<script>
var input = document.getElementsByTagName("input")[0],
action;
input.addEventListener("keydown", function (e){
var info = {
code: e.code,
keyCode: e.keyCode
};
//Open the key-event
console.group("key event start", info);
console.group("keydown");
console.log({
e: e
});
action = e.type;
console.groupEnd();
});
input.addEventListener("keypress", function (e){
console.group("keypress");
console.log({
e: e
});
action = e.type;
// console.log("value", e.target.value);
console.groupEnd();
});
input.addEventListener("keyup", function (e){
console.group("keyup");
console.log({
e: e
});
if (action != "keypress" && e.keyCode == 32 && e.target.value.endsWith(". ")) {
console.warn("keypress action has been skipped, space-bar has been pressed and the input ends with '. '");
e.target.value = e.target.value.replace(new RegExp(". " + "$"), " ");
}
console.groupEnd();
//Close key-event
console.groupEnd();
});
</script>
</html>
答案 2 :(得分:-1)
转到系统偏好设置&gt;&gt;键盘&gt;&gt;文本。 然后取消选中选项&#34;使用双倍空格&#34;添加句点。
这个选项在iPhone中非常有用,因为当我们发短信时,&#34;。&#34;没有进入第一个键盘布局。但是在Mac上我们可以没有它。