作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的任务是制作一个表单,当有人在输入英文字符时,表单的输入元素通过 JavaScript 会自动将输入元素上的字符转换为希腊字符。在按下提交按钮之前。所以,我做了一个html测试文件,但我不确定我这样做是否正确。
这个想法是,在按键上,我们得到英文字符,然后从对象中得到希腊字符,然后我们将它们返回到输入 element(#fname)
。
到目前为止,这是我的 JavaScript 代码:
var myObject;
myObject = {
"a" : "α",
"b" : "β",
"c" : "ψ",
"d" : "δ",
"e" : "ε",
"f" : "φ",
"g" : "γ",
"h" : "η",
"i" : "ι",
"j" : "ξ",
"k" : "κ",
"l" : "λ",
"m" : "μ",
"n" : "ν",
"o" : "ο",
"p" : "π",
"q" : ";",
"r" : "ρ",
"s" : "σ",
"t" : "τ",
"u" : "θ",
"v" : "ω",
"w" : "ς",
"x" : "χ",
"y" : "υ",
"z" : "ζ",
";" : ""
};
var ch = document.getElementById("fname"); //gets the value from the input
var chVal = ch.value.split(""); //returns an array
//console.log(chVal);
function toGreek(chVal,myObject){
var grArray = [];
for(var i=0; i<chVal.length; i++){
for(var prop in myObject){
if (myObject.hasOwnProperty(property)) {
if(chVal[i]== myObject[prop])
grArray.push(myObject.prop);
return grArray;
}
}
}
}
最佳答案
只是改变字符并不那么复杂:
function enToGreek(val) {
for (var en in myObject) {
if (val === en) return myObject[en];
}
return val;
}
document.getElementById('fname').onkeyup = function(e) {
var caretStart = this.selectionStart,
caretEnd = this.selectionEnd,
en = String.fromCharCode(e.keyCode).toLowerCase(),
greek = enToGreek(en);
if (en !== greek) {
this.value = this.value.replace(en, greek);
this.setSelectionRange(caretStart, caretEnd);
}
};
演示 -> http://jsfiddle.net/a73Lpq7b/
[更新,现在保留插入符号位置]
关于javascript - 插入英文字符,取回希腊字符(javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30314603/
我是一名优秀的程序员,十分优秀!