我想要实现的基本上是阿拉伯字符误用高亮器!
为了更容易理解,我将尝试解释一个类似于英语的功能。
想象一下一个大小写错误的字符串,需要将其正确地重写,所以用户在输入框中重新输入字符串并提交后,js会检查是否有任何字符未被更正,然后显示整个字符串,并在红色中突出显示那些字母;
例如 [test] 变成 [Test]
为此,我正在检查这些字符,如果检测到故障字符,则将其包围在 span 中以便以红色着色。
到目前为止,一切都很好,但是当我尝试为阿拉伯语复制此操作时,故障字符会从单词中分离出来,使其无法阅读。
演示: jsfiddle
function check1() {
englishanswer.innerHTML = englishWord.value.replace(/t/, '<span style="color:red">T</span>');
}
function check2() {
arabicanswer.innerHTML =
arabicWord.value.replace(/\u0647/, '<span style="color:red">' +
unescape("%u0629") + '</span>') +
'<br>' + arabicWord.value.replace(/\u0647/, unescape('%u0629'));
}
fieldset {
border: 2px groove threedface;
border-image: initial;
width: 75%;
}
input {
padding: 5px;
margin: 5px;
font-size: 1.25em;
}
p {
padding: 5px;
font-size: 2em;
}
<fieldset>
<legend>English:</legend>
<input id='englishWord' value='test' />
<input type='submit' value='Check' onclick='check1()' />
<p id='englishanswer'></p>
</fieldset>
<fieldset style="direction:rtl">
<legend>عربي</legend>
<input id='arabicWord' value='بطله' />
<input type='submit' value='Check' onclick='check2()' />
<p id='arabicanswer'></p>
</fieldset>
注意在测试阿拉伯语单词时,带有跨度的字符 [第一预览] 与单词的其余部分分开显示,而没有带有跨度的字符 [第二预览] 则正常显示。
‍
技巧不起作用。 - nneonneo