首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当按下按钮时,是否有继续聚焦MathQuill输入的方法?

当按下按钮时,是否有继续聚焦MathQuill输入的方法?
EN

Stack Overflow用户
提问于 2022-04-04 02:26:43
回答 1查看 252关注 0票数 0

我使用带有按钮的用于MathQuill的Desmos叉来输入符号:

代码语言:javascript
复制
var MQ = MathQuill.getInterface(2);
var answerSpan = document.getElementById("input");
var answerMathField = MQ.MathField(answerSpan);
document.getElementById("keypad-left-parenthesis").onclick = function () {
  answerMathField.focus();
  answerMathField.cmd("(");
};
document.getElementById("keypad-right-parenthesis").onclick = function () {
  answerMathField.focus();
  answerMathField.cmd(")");
};
代码语言:javascript
复制
body {
  font-size: 32px;
  margin: 1em;
}
.mq-editable-field {
  margin: 1em 0;
}
button {
  width: 2em;
  height: 2em;
}
代码语言:javascript
复制
<link href="https://cdn.jsdelivr.net/npm/mathquill@0.10.1-a/build/mathquill.css" rel="stylesheet">
<div id="input"></div>
<div><button id="keypad-left-parenthesis">(</button><button id="keypad-right-parenthesis">)</button></div>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/mathquill@0.10.1-a/build/mathquill.min.js"></script>

(我无法使用CDN来处理Desmos叉,但是这种行为在两个版本的MathQuill中都存在)

当我按下桌面上的左括号符号时,数学字段暂时失去焦点,然后插入左括号。右括号以“鬼”的形式出现。但是当我按右括号符号时,数学字段又失去了焦点,“幽灵”变成了固体,因此右括号被插入,产生了两组括号--一组在另一组中--而只有一组是有意的。

是否有一种方法可以在单击按钮时应用焦点样式,如Desmos网站

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-06 11:22:51

您使用的onclick事件不能防止焦点丢失。

解决此问题的一种方法是使用onmousedown而不是onclick

这不应该改变行为,而是允许我们使用event.preventDefault()来保持对输入的关注。

所以这个按钮看起来是:

代码语言:javascript
复制
document.getElementById("keypad-left-parenthesis").onmousedown = function () {
    event.preventDefault();
    answerMathField.cmd("(");
};

更新片段:

代码语言:javascript
复制
var MQ = MathQuill.getInterface(2);
var answerSpan = document.getElementById("input");
var answerMathField = MQ.MathField(answerSpan);

document.getElementById("keypad-left-parenthesis").onmousedown = function () {
  event.preventDefault();
  answerMathField.cmd("(");
};
document.getElementById("keypad-right-parenthesis").onmousedown = function () {
  event.preventDefault();
  answerMathField.cmd(")");
};
代码语言:javascript
复制
body {
  font-size: 32px;
  margin: 1em;
}
.mq-editable-field {
  margin: 1em 0;
}
button {
  width: 2em;
  height: 2em;
}
代码语言:javascript
复制
<link href="https://cdn.jsdelivr.net/npm/mathquill@0.10.1-a/build/mathquill.css" rel="stylesheet">
<div id="input"></div>
<div><button id="keypad-left-parenthesis">(</button><button id="keypad-right-parenthesis">)</button></div>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/mathquill@0.10.1-a/build/mathquill.min.js"></script>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71731429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档