2010-04-18 49 views
3

我已經使用了「Google AJAX Transliteration API」,它和我一起工作得很好。Google AJAX Transliteration API:是否可以使頁面中的所有輸入字段變得可翻譯?

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

目前我有一個項目,我需要的所有輸入字段中的每一頁(輸入& textarea的標籤)是transliteratable,而這些輸入字段從頁不同(動態)。 據我所知,我必須在API調用中調用makeTransliteratable(elementIds,opt_options)方法來定義哪些輸入字段可以轉換,在我的情況下,我無法手動預先定義這些字段。有沒有辦法做到這一點?

在此先感謝

回答

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(谷歌它),那麼你可以寫,而不是該更緊湊代碼:

var allTextBoxes = $("input[type='text'], textarea").toArray(); 
makeTransliteratable(allTextBoxes, /* options here */); 

它使用一個CSS選擇器來查找所有的以「文本」類型屬性的投入,以及所有文字區域。有一個方便的toArray方法,將所有輸入放入數組中,準備傳遞給可轉換的元素。我希望這會有所幫助, Douglas

相關問題