gpt4 book ai didi

javascript - 我如何将 2 个不同的特殊字符视为与 jquery/javascript 相同的字符?

转载 作者:行者123 更新时间:2023-12-01 05:20:17 27 4
gpt4 key购买 nike

我使用Flexdatalist在我的网站中输入自动完成插件并且工作正常,但我对一些特殊字符有一个奇怪的问题。

由于我使用希腊语言,因此每次输入字母“ά”时,它仅返回包含字母“α”的结果,而不返回包含字母“ά”的结果。

在希腊语中,字母“ά”和“α”完全相同,我想将它们视为相同的字符,因此每次我在搜索输入字段中输入包含字母“ά”的单词时进行检索还有包含字母“α”的单词,反之亦然。

这可以用 jQuery 或 Javascript 实现吗?

PS。它可以是任何单个 HTML5 输入字段,而不仅仅是我上面提到的特定插件。

最佳答案

理想的解决方案是覆盖输入的 value 属性,以便每当您(或任何插件)尝试访问 时,它都会执行相同含义的希腊字母的替换输入。我尝试实现这样的解决方案,但在我看来这是不可能实现的。基本上,您需要在输入上调用 Object.defineProperty 并覆盖 valuegetter 。但是,input.value 是 javascript 访问输入值的唯一方式。这意味着一旦您覆盖该属性,您就“将唯一的途径”削减为原始值。看看我的解决方案如何由于此限制而陷入无限递归:

var input = document.getElementById("myInput");
var btn = document.getElementById("myBtn");

btn.addEventListener("click", function() {
console.log(input.value);
});

Object.defineProperty(input, 'value', {
get: function() {
return this.value.replace(/ά/g, "α")
}
});
<input id="myInput" />
<button id="myBtn">Read value</button>

“最接近”的解决方法是定义一个自定义属性并在整个代码中使用它,即 greekAmbigouslyValue:

var input = document.getElementById("myInput");
var btn = document.getElementById("myBtn");

btn.addEventListener("click", function() {
console.log(input.greekAmbiguousValue);
});

Object.defineProperty(input, 'greekAmbiguousValue', {
get: function() {
return this.value.replace(/ά/g, "α")
}
});
<input id="myInput" />
<button id="myBtn">Read value</button>

这远非理想,因为正如我所说,value 是唯一允许 javascript 访问输入内文本的属性,世界上的每个插件都将依赖于这一事实。您还必须自定义插件,而不仅仅是代码才能使用 greekAmbigouslyValue

关于javascript - 我如何将 2 个不同的特殊字符视为与 jquery/javascript 相同的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44617195/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com