3

「Google AJAX Transliteration API」を使用しましたが、うまくいきました。

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

現在、すべてのページのすべての入力フィールド (input & textarea タグ) を音訳可能にする必要があるプロジェクトがありますが、これらの入力フィールドはページごとに異なります (動的)。私が知っているように、API 呼び出しで makeTransliteratable(elementIds, opt_options) メソッドを呼び出して、文字変換可能にする入力フィールドを定義する必要があります。私の場合、これらのフィールドを手動で事前定義することはできません。これを達成する方法はありますか?

前もって感謝します

4

1 に答える 1

4

求めていることを言い換えると、特定の基準に一致するページ上のすべての入力をまとめて、API に渡したいとします。

API リファレンスをざっと見てみると、makeTransliteratable は ID 文字列の配列または要素の配列を受け入れると書かれています。事前に要素の ID がわからないため、要素の配列を渡します。

では、要素の配列を取得するにはどうすればよいでしょうか。

難しい方法と簡単な方法の 2 つの方法を紹介します。

まず、すべてのテキスト領域を取得するには、document.getElementsByTagName API を使用してそれを行うことができます。

var textareas = document.getElementsByTagName("textarea");

チェックボックスやラジオボタンなどを含めたくないため、入力のリストを取得するのは少し難しくなります。 type 属性で区別できるので、区別するための簡単な関数を書きましょう:

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");

すべてのテキスト ボックスへの参照を取得したので、それらを 1 つの配列に連結し、それを 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」であるすべての入力と、すべてのテキストエリアを検索します。すべての入力を配列に入れ、makeTransliteratable に渡す準備ができている便利な toArray メソッドがあります。

これがお役に立てば幸いです、ダグラス

于 2010-04-18T10:15:42.287 に答える