input textのdatalistで特殊文字 mΩ(ΩのuncodeはU+02126)を表示したいですが、うまくいかなくて困っています。
表示はGrid上ですが、ただのinput textのautocomplateのdatalistです。
htmlコードΩを使用した場合は、ω(オメガ)となりました。
Google Chromeを利用しています。
どなたかご教授お願いします。
javascript
1let datalist = document.createElement("datalist"); 2const tempUnits = [{id: 1, text: "mΩ"}]; 3 4tempUnits.forEach((currentValue) => { 5 let option = document.createElement("option"); 6 option["data-value"] = currentValue.id; 7 8 if (currentValue.text === "mΩ") { 9 option["value"] = "m&#x(U+02126)"; // m&#x(U+02126)だとそのまま表示されてしまった。 10 } 11 12 // datalistに追加するようなことをしている。 13 // this.eInput1.appendChild(datalist); 14});
(追記)
この質問で記載しましたのはΩ(U+03A9)のオームのほうです、ᴎのほうになっていると思います。
javascript側で機種依存文字の Ω(U+2126) を使用するとうまくいきます。
以下は実際に使用しているコードです。
C#
1// C#ですが、ただのEnum値です。 2using System.ComponentModel.DataAnnotations; 3 4namespace DomainModel { 5 public enum UnitEnum { 6 [Display(Name = "mΩ")] // Ω(U+003A9)を使用 7 Mohm = 1 8 } 9}
javascript
1// ag-gridのcomponentで input type="text" autocomplateとそのdatalistを作成してます。 2function getSelectUnits() { 3 function SelectUnits() { } 4 5 SelectUnits.prototype.init = (params) => { 6 this.params = params; 7 8 this.eInput1 = document.createElement("input"); 9 this.eInput1.value = params.value; 10 this.eInput1.classList.add("ag-input1"); 11 12 this.eInput1.autocomplete = "on"; 13 this.eInput1.placeholder = "-- 選択 --"; 14 this.eInput1.setAttribute("list", "selectUnits"); 15 16 this.eInput1.style.width = "100%"; 17 }; 18 19 SelectUnits.prototype.getGui = () => { 20 return this.eInput1; 21 }; 22 23 SelectUnits.prototype.afterGuiAttached = () => { 24 if ("cellEditorParams" in this.params.colDef) { 25 let datalist = document.createElement("datalist"); 26 datalist.id = "selectUnits"; 27 28 const units = this.params.colDef.cellEditorParams; 29 const unit = this.eInput1.value; 30 this.tempUnits = getSelectFilterData(units, "key", "value", unit); // [{ id: 1, text: "Ω" }, { id: 2, text: "Ω" } ]みたいなこと。 31 32 if (this.tempUnits) { 33 this.tempUnits.forEach((currentValue) => { 34 let option = document.createElement("option"); 35 option["data-value"] = currentValue.id; 36 37 // datalistへの追加処理 38 // Ω(U+003A9) → Ω(U+02126)※機種依存文字 変換 39 let value = currentValue.text.toString().replace(/Ω/, "\u{02126}"); 40 option["value"] = value; 41 42 datalist.appendChild(option); 43 }); 44 45 this.eInput1.appendChild(datalist); 46 } 47 48 // 既にGridにデータがある場合 49 // Ω(U+003A9) → Ω(U+02126)※機種依存文字 変換 50 let value2 = this.eInput1.value.toString().replace(/Ω/, "\u{02126}"); 51 this.eInput1.value = value2; 52 } 53 }; 54 55 SelectUnits.prototype.getValue = () => { 56 // datalistで選択した値をΩ(U+003A9)に変換する ※GridはΩ(U+003A9)の表示の影響を受けなかった。 57 // Ω(U+02126)※機種依存文字 → Ω(U+003A9)変換 58 let value = this.eInput1.value.toString().replace(/Ω/, "\u{003A9}"); 59 this.eInput1.value = value; 60 return this.eInput1.value; 61 }; 62 63 SelectUnits.prototype.destory = () => { 64 // console.log("destory"); 65 }; 66 67 return SelectUnits; 68}
回答1件
あなたの回答
tips
プレビュー