2010-04-18 3 views
3

J'ai utilisé "Google AJAX Transliteration API" et ça marche bien avec moi.API de translittération Google AJAX: Est-il possible de rendre transluctibles tous les champs de saisie de la page?

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

Actuellement, j'ai un projet que j'ai besoin tous les champs d'entrée dans chaque page (entrée & tags textarea) être transliteratable, alors que ces champs d'entrée diffère d'une page à (dynamique). Comme je sais, je dois appeler la méthode makeTransliteratable (elementIds, opt_options) dans l'appel de l'API pour définir les champs d'entrée à transliteratable, et dans mon cas, je ne peux pas prédéfinir ces champs manuellement. Y a-t-il un moyen d'y parvenir?

Merci à l'avance

Répondre

4

Reformulation ce que vous demandez: vous voulez rassembler toutes les entrées sur la page qui correspondent à certains critères, et puis les passer dans un api. Un aperçu de la référence de l'API indique que makeTransliteratable acceptera un tableau de chaînes d'id ou un tableau d'éléments. Puisque nous ne connaissons pas les identifiants des éléments avant la main, nous allons passer un tableau d'éléments.

Alors, comment obtenir le tableau d'éléments?

Je vais vous montrer deux façons: d'une manière difficile et d'une manière facile.

Tout d'abord, pour obtenir toutes les zones de texte, nous pouvons le faire en utilisant l'API document.getElementsByTagName:

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

Obtenir la liste des entrées est un peu plus difficile, car nous ne voulons pas inclure les cases à cocher , boutons radio, etc. nous pouvons les distinguer par leur attribut type, donc permet d'écrire une fonction rapide de faire cette distinction:

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; 
} 

maintenant, nous pouvons utiliser cette fonction pour obtenir les entrées, comme ceci:

var inputs = document.getElementsByTagName("input") 
var textInputs = selectElementsWithTypeAttribute(textInputs, "text"); 

Maintenant que nous avons des références à toutes les zones de texte, nous pouvons les concaténer en un seul tableau, et passer que l'api:

var allTextBoxes = [].concat(textareas).concat(textInputs); 
makeTransliteratable(allTextBoxes, /* options here */); 

Donc, cela devrait tout le travail, mais nous pouvons faire c'est plus facile avec une utilisation judicieuse des méthodes de la bibliothèque. Si vous deviez télécharger jQuery (google), alors vous pouvez écrire ce code plus compact au lieu:

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

Il utilise un sélecteur CSS pour trouver toutes les entrées avec un attribut de type de « texte », et tout textareas. Il existe une méthode très pratique, toArray, qui place toutes les entrées dans un tableau, prêt à passer à makeTransliteratable. Je souhaite que cela a aidé, Douglas

Questions connexes