Google AJAX Transliteration API:是否可以使页面中的所有输入字段都可以进行转换?

时间:2010-04-18 09:45:06

标签: ajax api transliteration

我使用过“Google AJAX Transliteration API”,它对我来说很顺利。

http://code.google.com/apis/ajaxlanguage/documentation/referenceTransliteration.html

目前我有一个项目,我需要每个页面中的所有输入字段(输入和文本区域标记)都可以进行转换,而这些输入字段因页面而异(动态)。 据我所知,我将在API调用中调用makeTransliteratable(elementIds,opt_options)方法来定义哪些输入字段可以进行转换,而在我的情况下,我无法手动预定义这些字段。有没有办法实现这个目标?

提前致谢

1 个答案:

答案 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。

我希望这有帮助, 道格拉斯