2009-06-22 9 views
1

Je travaille sur un site assez dynamique et je souhaite que l'utilisateur puisse choisir ce qu'il veut saisir. Les choix d'entrée sont les différents types d'entrée (texte, mot de passe, etc.) Y at-il un style/moyen de créer cela? Je pensais qu'ils choisissaient dans un menu déroulant et que Javascript s'occupait du reste. Mais je pense qu'il doit y avoir une façon établie de faire face à ce que je ne trouve tout simplement pas sur le web.Modifier le type d'entrée

Merci pour toute aide.

+0

Quels types d'entrées souhaitez-vous implémenter? – rahul

+0

@phoenix Je pensais à la fois aux types d'entrée texte et mot de passe ainsi qu'à une zone de texte. – PF1

Répondre

3

En Javascript, vous devez créer une entrée comme suit.

var input = document.createElement('input'); 
input.type = 'button'; 
... 

Donc, si vous voulez créer des entrées à la volée, vous pouvez créer un menu déroulant qui répertorie les types d'entrées sous forme de chaînes (bouton, texte, etc.). Ensuite, une fois que l'utilisateur a choisi la chaîne dans le menu déroulant, vous passeriez à une fonction Javascript comme suit:

function createInput(type) { 
    var input = document.createElement('input'); 
    input.type = type 
    ... 
    return input; 
} 

Ensuite, si vous vouliez ajouter l'entrée à un élément sur la page avec id ' foo ':

var input = createInput('button'); 
var appendToThis = document.getElementById('foo'); 
appendToThis.appendChild(input); 

Si vous souhaitez commencer par un div sur la page, imaginez que vous avez une balise div id toto sur la page:

<div id=foo><input type=text></div> 

Ensuite, lorsque l'utilisateur choisit un article, clair la div et faire une nouvelle entrée:

function whenUserChoosesAType(type) { 
    var div = document.getElementById('foo'); 
    rac(div); 
    var input = document.createElement('input'); 
    div.appendChild(input); 
}  

//abbreviated function to clear the contents of a DOM element such as a div 
function rac(elem) { 
    while(elem.hasChildNodes()) elem.removeChild(elem.firstChild); 
} 
+0

Alors que je vais devoir essayer cela et voir si cela fonctionne avec ma configuration, ça a l'air super et je vous remercie pour votre aide! – PF1

+0

J'ai juste essayé d'implémenter le code, mais je rencontre un petit problème. Ce problème étant que je veux qu'un champ de saisie par défaut soit là, mais alors le menu déroulant donnera à l'utilisateur la possibilité de le changer. Est-il possible de remplacer l'autre champ de saisie lorsque j'exécute ce script? – PF1

+0

Bien sûr, il suffit de créer un div en utilisant Javascript, comme je fais l'entrée ci-dessus. Ensuite, créez une entrée par défaut et ajoutez-la à la div. Lorsque l'utilisateur sélectionne un nouveau type d'entrée, videz la div et ajoutez une nouvelle entrée du type approprié. I aiment abbreiavte la fonction pour effacer un div (ou un autre élément) comme suit: {tandis que rac (obj) de la fonction (obj.hasChildNodes()) obj.removeChild (obj.firstChild); } –

0

Je lui ai répondu à vos questions à l'origine comme ceci:.

<input type="text" id="changingInput"> 
<input type="button" value="Click Here For Example Of Changing" onclick="javascript:document.getElementById('changingInput').type = 'password';"> 

Mais j'ai vérifié et il ne fonctionne pas dans IE ... ou bien sûr (il Ne fonctionne à merveille dans Safari) donc j'ai trouvé ce grand lien ici:

http://www.universalwebservices.net/web-programming-resources/javascript/change-input-element-type-using-javascript

Hope this helps!

+0

Merci pour le lien, je vais vérifier! – PF1

Questions connexes