2010-05-24 5 views
1

Je veux avoir un menu déroulant où un utilisateur peut choisir parmi plusieurs options prédéfinies, mais je veux aussi lui donner la possibilité d'insérer une valeur spécifique à l'utilisateur, je pensais avoir l'une des options "user specific" qui permettra à son tour l'utilisateur doit insérer une entrée spécifique à l'utilisateur dans une zone de texte qui apparaît ou est modifiable lorsque l'utilisateur sélectionne l'option "user specific". Quelqu'un at-il des idées comment je peux implémenter ceci est HTML et Javascript?Comment puis-je avoir une liste déroulante (sélectionnez HTML) où je veux avoir l'une des options où je permets à l'utilisateur d'entrer un utilisateur spécifie enty?

merci

Répondre

3

Attachez un événement onchange à la sélection et quand il sélectionne "Personnalisé" ou quelque chose comme ça, faites input visible sous la sélection. Cette entrée doit être initialement cachée (css display:none). Lorsque l'utilisateur sélectionne "custom", faites-le display:inline.

1

Jukka écrit un article sur la façon de créer a combobox-like effect. Je l'ai seulement parcouru, mais il semble accessible et son contenu est généralement de très haute qualité.

1

Vous pouvez aller sur comme:

<select id="myid" onchange="doIt(this);"> 
    optons... 
</select> 

<script type="text/javascript"> 
function doIt(field) { 
if (field.value === 'user specific') 
{ 
    var tbox = document.createElement('input'); 
    tbox.setAttribute('type', 'text'); 
    document.form_name.appendChild(tbox); 
} 
} 
</script> 
1

Voir ici: http://jsfiddle.net/EscRV/

html

<select id="mySelect"> 
    <option>value 1</option> 
    <option value="[new]">new</option> 
</select> 

js

// get a cross-browser function for adding events, place this in [global] or somewhere you can access it 
var on = (function(){ 
    if (window.addEventListener) { 
     return function(target, type, listener){ 
      target.addEventListener(type, listener, false); 
     }; 
    } 
    else { 
     return function(object, sEvent, fpNotify){ 
      object.attachEvent("on" + sEvent, fpNotify); 
     }; 
    } 
}()); 

var mySelect = document.getElementById("mySelect");  
on(mySelect, "change", function(){ 
    if (this.value === "[new]") { 
     var newOptionName = prompt("input new option"); 
     if (newOptionName){ 
      mySelect.options[mySelect.options.length] = new Option(newOptionName); 
      this.value= newOptionName; 
     } 
    } 
}); ​ 
0

code suivant vous aidera à résoudre votre problèm m.

<html> 
<head></head> 
<body> 

<select id="sbox"> 
<option value="1" onclick="hideUserOption();">First option</option> 
<option value="2" onclick="hideUserOption();">second option</option> 
<option value="3" onclick="showUserOption();">User Specific</option> 
</select> 
<div id="userOptions" style="display:none"> 
<input type="text" /> 
<input type="submit" value="Save"/> 
</div> 
<script type="text/javascript"> 

    function showUserOption() { 
     var userOptions = document.getElementById("userOptions"); 
     userOptions.style.display = "block"; 
    } 

    function hideUserOption() { 
     var userOptions = document.getElementById("userOptions"); 
     userOptions.style.display = "none"; 
    } 


</script> 
</body> 



</html> 
Questions connexes