在HTML中,可以在ITEM的基础上更改语言输入吗?

时间:2012-05-07 02:12:19

标签: javascript html dom

让用户表单包含许多与此类似的行:

<h2>Parts of Body</h2>
<div>
  English: <input name='body_en-1' />
  &nbsp;
  Thai: <input name='body_th-1' />
  &nbsp;
  Description: <input name='body_descr-1' />
  <br/>
  ...
</div>

问题:杀死用户在两种语言之间来回切换键盘 - 许多错误,很多抱怨。

无论如何,INPUT.focus()可以为用户在语言之间切换键盘吗?

2 个答案:

答案 0 :(得分:0)

不,你甚至不知道某些特定的键盘布局(如泰语的某些特定布局)是否可用且可用。在我的电脑上,有四种适用于泰语的布局。我从来没有启用它们中的任何一个,但如果我已经这样做并使用了布局,那么它的布局可能与你试图让我使用的布局不同。

用户输入的字符可能具有挑战性,但您无法通过尝试设置键盘布局来修复它。如果您可以在JavaScript中设置布局(我认为您不能),那么当用户习惯于完全不同的布局时,您可能会严重破坏功能。

在某些情况下,屏幕键盘可以解决部分问题。例如,如果希望用户只用泰语输入一两个字,其余用英语输入,则可以嵌入一个带有泰语字符的虚拟键盘(并且可能隐藏它直到专注于泰语输入的字段)。

从技术上讲,你可以在各个元素上设置lang属性,这原则上是正确的做法,但在实践中,它现在几乎没有任何影响。

答案 1 :(得分:0)

直接答案......不,你不能。
您可以做的是,您可以通过将不同的键盘布局映射到英语键盘布局来模拟另一个键盘布局。
例如,您可以将其用于北欧布局:

    <input name="Swedish" type="text" onkeypress="convertToNordic(event, this);" onkeyup="doBackSpace(this);" />
    <script>
function convertToNordic(evt, handle) {
    switch (String.fromCharCode(evt.which || evt.keyCode)){
        case '[' : handle.value += 'å';break;
        case ';' : handle.value += 'ö';break;
        case '\'' : handle.value += 'ä';break;
        default : handle.value += String.fromCharCode(evt.which || evt.keyCode);

    }
}
function doBackSpace(handle){
    handle.value = handle.value.substr(0,handle.value.length-1);

}
    </script>

这是JSFiddle

你可以从那里开始工作