我使用过“Google AJAX Transliteration API”,它对我来说很顺利。
http://code.google.com/apis/ajaxlanguage/documentation/referenceTransliteration.html
目前我有一个项目,我需要每个页面中的所有输入字段(输入和文本区域标记)都可以进行转换,而这些输入字段因页面而异(动态)。 据我所知,我将在API调用中调用makeTransliteratable(elementIds,opt_options)方法来定义哪些输入字段可以进行转换,而在我的情况下,我无法手动预定义这些字段。有没有办法实现这个目标?
提前致谢
答案 0 :(得分:4)
改述你的要求:你想收集页面上符合特定标准的所有输入,然后将它们传递给api。
快速浏览API参考说明makeTransliteratable将接受一组id字符串或一组元素。由于我们之前不知道元素的id,我们将传递一个元素数组。
那么,如何获取元素数组?
我将向您展示两种方式:艰难的方式和简单的方法。
首先,要获取所有文本区域,我们可以使用document.getElementsByTagName API执行此操作:
var textareas = document.getElementsByTagName("textarea");
获取输入列表稍微有些困难,因为我们不想包含复选框,单选按钮等。我们可以通过它们的类型属性区分它们,所以让我们编写一个快速函数来区分:
function selectElementsWithTypeAttribute(elements, type)
{
var results = [];
for (var i = 0; i < elements.length; i++)
{
if (elements[i].getAttribute("type") == type)
{
results.push(elements[i]);
}
}
return results;
}
现在我们可以使用此函数来获取输入,如下所示:
var inputs = document.getElementsByTagName("input")
var textInputs = selectElementsWithTypeAttribute(textInputs, "text");
现在我们已经引用了所有文本框,我们可以将它们连接成一个数组,并将其传递给api:
var allTextBoxes = [].concat(textareas).concat(textInputs);
makeTransliteratable(allTextBoxes, /* options here */);
所以,这应该都可以,但我们可以通过明智地使用库方法来简化它。如果您要下载jQuery(google it),那么您可以编写更紧凑的代码:
var allTextBoxes = $("input[type='text'], textarea").toArray();
makeTransliteratable(allTextBoxes, /* options here */);
这使用CSS选择器来查找type属性为“text”的所有输入,以及所有textareas。有一个方便的toArray方法,它将所有输入放入一个数组中,准备传递给makeTransliteratable。
我希望这有帮助, 道格拉斯