为了账号安全,请及时绑定邮箱和手机立即绑定

以 Javascript 形式输入扩展拉丁字符 Alt+0256-0383

以 Javascript 形式输入扩展拉丁字符 Alt+0256-0383

慕无忌1623718 2023-05-25 18:03:53
我的 Javascript 数据输入弹出窗口的用户无法输入 255 以上的扩展拉丁字符。例如,Alt+0321 是波兰语 Ł。即使在这个 StackOverflow 表单上,我也无法键入字符,但可以复制粘贴它。而 ß 可以直接键入,因为它是 Alt+0223。有没有办法绕过这个限制?非 Javascript 工具,例如 MS Office,可以工作。我不得不建议人们在 Word 中输入数据,然后复制粘贴,这看起来不太好。Gmail 和谷歌搜索似乎同样受到限制。
查看完整描述

1 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

经过长时间搜索没有结果,这是我的解决方案:(

适用于 0-65535 | 0000-ffff)


var altCapture = null;


function keydown(event) {

  var keyCode = event.keyCode;

  if(keyCode == 18) altCapture = "";

  if(altCapture != null && keyCode != 18)

    altCapture += (keyCode - 96);

}


function keyup(event) {

  if(event.keyCode == 18) {

    event.target.value += String.fromCharCode(+altCapture);

  }

}


function keypress(event) {

  if(altCapture != null) {

    event.preventDefault();

    altCapture = null;

  }

}

<input

  onkeydown  ="keydown (event)"

  onkeyup    ="keyup   (event)"

  onkeypress ="keypress(event)"

>

<input

  onkeydown  ="keydown (event)"

  onkeyup    ="keyup   (event)"

  onkeypress ="keypress(event)"

>

在所有按键按下后执行按键。
按下 18 (alt),通过将 altCapture 从 null 设置为 "" 开始捕获。
按下而不是 18 并捕获,将数字附加到 altCapture。
(默认情况下,不按下 18 且不捕获。)
向上键 18,从代码 altCapture 追加字符(+ 将字符串转换为数字)。
(按键不是 18,默认值。)
按键和捕获,防止默认值并将 altCapture 重置为 null。
(按键而不捕获,默认。)

查看完整回答
反对 回复 2023-05-25
  • 1 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信