作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图从输入元素中获取部分文本,具体取决于用户单击的位置,但如果我在 1 和 0 之间单击,结果是错误的“שלום 1”,它应该是“שלום 0”。
我尝试添加 CSS "unicode-bidi: plaintext;"到输入元素。
它无助于解决问题。
var myInput = document.getElementById("myInput")
myInput.value = "שלום 10 hello";
alert("Needs to be: 'שלום 0' \n Result '"+myInput.value.substring( 0, 6 )+"'")
function mouseUp(){
alert("Result '"+myInput.value.substring( 0, myInput.selectionStart )+"'")
}
myInput.addEventListener("mouseup", mouseUp);
<input id="myInput" style="direction: rtl;unicode-bidi: plaintext;">
最佳答案
感谢Bergi,我找到了解决方案的评论:
console.log("שלום 10 hello".split("").map(c =>
'${c}': \\u${c.charCodeAt(0).toString(16).padStart(4,'0')}
).join("\n")); might be helpful to see how the string is actually composed, without weird bidi rendering, which is what slice works on. I suspect you need to add some ltr/rtl marks.
var myInput = document.getElementById("myInput"),
Normal = document.getElementById("Normal"),
Fixed = document.getElementById("Fixed");
myInput.value = "שלום 10 hello";
Normal.innerHTML = myInput.value.substring( 0, 6 );
Normal.innerHTML += '<div style="display: inline-block;"></div>';
Normal.innerHTML += myInput.value.substring( 6, 14 );
Fixed.innerHTML =
myInput.value.replace("10",String.fromCodePoint("0x200E")+"10").substring( 0, 7 );
Fixed.innerHTML += '<div style="display: inline-block;"></div>';
Fixed.innerHTML += myInput.value.replace("10",String.fromCodePoint("0x200E")+"10"+String.fromCodePoint("0x200F")).substring( 7, 16 );
<input id="myInput" style="direction: rtl;width: 79px;">
<h3>Before the fix</h3>
<div id="Normal" style="background: #ffa0a0;width: fit-content;direction: rtl;display: inline-block;"> </div>
<h3>After the fix</h3>
<div id="Fixed" style="background: #a2ffa0;width: fit-content;direction: rtl;display: inline-block;"> </div>
关于javascript - 如何在纯 JavaScript 子字符串方法中处理双向文本和数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73228179/
我是一名优秀的程序员,十分优秀!