簡體   English   中英

我如何將2個不同的特殊字符與jquery / javascript一樣對待?

[英]How can i treat 2 different special characters as the same with jquery/javascript?

我在網站上使用了Flexdatalist輸入自動完成插件,並且工作正常,但是我遇到了一些特殊字符的怪異問題。

當我使用希臘語時,例如,每次輸入字母“ά”時,它僅返回包含字母“α”的結果,而不返回包含字母“ά”的結果。

在希臘語中,字母“ά”和“α”是完全相同的,我想將它們視為相同的字符,因此每次我在搜索輸入字段中輸入包含字母“ά”的單詞時也要檢索這些單詞包含字母“α”,反之亦然。

使用jQuery或Javascript甚至可能嗎?

PS。 它可以是任何單個HTML5輸入字段,而不僅僅是我上面提到的特定插件。

我認為最簡單的方法應該是創建帶有重音/無音值的字典或數組,然后嘗試解析它們。 例如:

var mySyllabels = {"ά": "α", "á": "a", "ä": "a", "á": "a"};

然后創建一個函數,用其重音值替換每個重音字符。

理想的解決方案是重寫輸入的value屬性,以便在您(或任何插件)嘗試訪問inputvalue時執行含義相同的希臘字母的替換。 我試圖實現這樣的解決方案,但是IMO無法實現。 基本上,您需要在輸入上調用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> 

“最近”的解決方法是定義一個自定義屬性,並在整個代碼中使用該屬性,即greekAmbiguousValue

 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訪問輸入中的文本的唯一屬性,世界上每個插件都將依賴這一事實。 您還必須自定義插件,而不僅僅是使用greekAmbiguousValue代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM