如何解决Mathquill输入字段消失的占位符
编辑:我已经解决了这个问题。对于遇到类似问题的任何人,我都将解决方案发布在此页面的底部。
问题
我正在制作一个使用Mathquill进行数学渲染的Web应用程序。我的想法是要有一个输入字段,以便用户输入,就像这样:
仅在用户单击之前显示占位符。为此,我需要检查用户之前是否单击过。
当前,这是我写的:
<!DOCTYPE html>
<html lang="en">
<head>
<Meta charset="UTF-8">
<Meta name="viewport" content="width=device-width,initial-scale=1.0">
<title>mathquill</title>
<link rel="stylesheet" href="assets/mathquill.css" />
<link rel="stylesheet" href="main.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="assets/mathquill.js"></script>
</head>
<body>
<p class="math-field">
<span id="answer">
\text{Click here and type in your equation...}
</span>
</p>
<script src="index.js"></script>
</body>
</html>
这是javascript:
var MQ = mathquill.getInterface(2); // Loads UI
var answerSpan = document.getElementById('answer');
var answerMathField = MQ.MathField(answerSpan,{
handlers: {
edit: function () {
}
}
});
var countClicks = 0;
answerSpan.onclick = function () {
countClicks = countClicks + 1;
if (countClicks > 2) {
answerSpan.onclick = function () {
answerMathField.movetoRightEnd();
};
} else {
answerSpan.onclick = function () {
answerMathField.select(); //highlight placeholder text
answerMathField.keystroke("Del"); // delete placeholder
};
}
};
但是由于某些原因,它会不断删除数学字段的内容-即使没有占位符。
如果我这样检查countClicks
的值:
document.addEventListener('click',function () {
console.log(countClicks + " clicks")
});
无论我单击多少次,它始终返回1
。有什么原因会发生这种情况?帮助将不胜感激。
解决方案
JavaScript的问题是我调用了onclick()
五次,导致函数重复:
- 首次点击
answerSpan.onclick = function () {
countClicks = countClicks + 1;
}
- 第二次点击
answerSpan.onclick = function () {
answerMathField.movetoRightEnd();
};
因此,浏览器不知道要执行哪个操作,因此按时间顺序排列每个onClick。这就是console.log(countClicks + " clicks")
每次都返回相同值的原因。
要解决此问题,我们必须消除嵌套函数中的onClick
。我们剩下了:
var countClicks = 0;
answerSpan.onclick = function () {
countClicks = countClicks + 1;
if (countClicks > 1) {
answerMathField.movetoRightEnd();
} else {
answerMathField.select(); //highlight placeholder text
answerMathField.keystroke("Del"); // delete placeholder
}
};
工作无懈可击。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。