2017-06-21 1 views
-2

Je suis très nouveau pour javascript. J'ai donc une option de sélection et un champ de saisie. Ce que je veux réaliser est d'avoir la valeur du champ d'entrée change quand je choisis une option particulière. C'est ce que j'ai essayé:Javascript change la valeur d'entrée lorsque l'option sélectionnée est sélectionnée

First Name: <input type="text" value="colors"> 

<select name=""> 
    <option>Choose Database Type</option> 
    <option onclick="myFunction(g)>green</option> 
    <option onclick="myFunction(r)>red</option> 
    <option onclick="myFunction(o)>orange</option> 
    <option onclick="myFunction(b)>black</option> 
</select> 

<script> 
function myFunction(g) { 
    document.getElementById("myText").value = "green"; 
} 
function myFunction(r) { 
    document.getElementById("myText").value = "red"; 
} 
function myFunction(o) { 
    document.getElementById("myText").value = "orange"; 
} 
function myFunction(b) { 
    document.getElementById("myText").value = "black"; 
} 
</script> 
+0

1. Veuillez penser au principe DRY. 2. Vous n'avez aucun élément avec un ID de "texte". 3. Vous passez dans les paramètres qui ne sont pas définis. 4. Vous ne les utilisez pas. – evolutionxbox

+0

Sans essayer de paraître trop méchant/dur, je vous suggère de commencer par suivre quelques tutoriels JavaScript de base avant de poser des questions comme celle-ci, comme si vous connaissiez même une petite quantité de JS vous connaissiez le problème. – George

+0

@evolutionxbox 5. ses fonctions sont nommées de la même manière et donc écrasent les précédentes, ce qui est le problème principal imo – George

Répondre

4

Quelques choses:

Vous devez utiliser la fonction onchange, plutôt que onclick sur chaque option.

Utilisez un attribut value sur chaque option pour stocker les données, et utiliser une instance de this pour affecter le changement (ou event.target)

Vous n'avez pas ID sur votre champ de texte

Vous êtes absent la fin de citation pour votre fonction onclick

<select name="" onchange="myFunction(event)"> 
    <option disabled selected>Choose Database Type</option> 
    <option value="Green">green</option> 
    <option value="Red">red</option> 
    <option value="Orange">orange</option> 
    <option value="Black">black</option> 
</select> 

Et la fonction:

function myFunction(e) { 
    document.getElementById("myText").value = e.target.value 
} 

Et ajoutez l'ID

<input id="myText" type="text" value="colors"> 

Fiddle: https://jsfiddle.net/gasjv4hs/

+0

Comme je l'ai dit, je suis très nouveau pour javascript. Merci beaucoup pour l'explication. Ça a fonctionné! –

+0

S'il vous plaît j'ai essayé d'implémenter ceci sur [CKEditor] (http://ckeditor.com) mais cela ne fonctionne pas. Avez-vous une idée de comment je peux le faire fonctionner? –

+0

@DanielC. - Désolé - je ne suis pas très familier avec CKEditor - je suppose que cela a à voir avec le placement du script - assurez-vous que le script est chargé après le HTML. – tymeJV

0

Vous créez des fonctions avec le même nom à plusieurs reprises.

Seul le dernier va fonctionner.

Les variables que vous transmettez g,r,o,b ne sont pas définies.

N'ajoutez pas onclick à option ajoutez onchange à select.

Faire usage de HTML5data-* attribut

function myFunction(element) { 
 
    document.getElementById("myText").value = element; 
 
}
First Name: <input type="text" id="myText" value="colors"> 
 

 
<select name="" onchange="myFunction(this.value);"> 
 
    <option>Choose Database Type</option> 
 
    <option data-value="green">green</option> 
 
    <option data-value="red">red</option> 
 
    <option data-value="orange">orange</option> 
 
    <option data-value="black">black</option> 
 
</select>

+0

S'il vous plaît j'ai essayé d'implémenter ceci sur [CKEditor] (http://ckeditor.com) mais cela ne fonctionne pas. Avez-vous une idée de comment je peux le faire fonctionner? –

0

Vous pouvez résoudre cette façon.

`Prénom:

<select name="" onchange="myFunction()" id="selectID"> 
    <option>Choose Database Type</option> 
    <option >green</option> 
    <option >red</option> 
    <option >orange</option> 
    <option >black</option> 
</select> 

<script> 
function myFunction() { 
    var selectItem = document.getElementByID('selectID').value; 
    document.getElementByID('yourId').value = sekectItem; 

} 
</script> 
0

est ici un moyen d'y parvenir:

var select = document.getElementById('colorName'); 
 

 
function myFunction(event) { 
 
    var color = 'No color selected'; 
 

 
    if (select.selectedIndex > 0) { 
 
    color = select.item(select.selectedIndex).textContent; 
 
    } 
 
    
 
    document.getElementById('myText').value = color; 
 
} 
 

 
select.addEventListener('click', myFunction); 
 

 
myFunction();
First Name: <input type="text" id="myText"> 
 

 
<select id="colorName"> 
 
    <option>Choose Database Type</option> 
 
    <option>green</option> 
 
    <option>red</option> 
 
    <option>orange</option> 
 
    <option>black</option> 
 
</select>

+0

S'il vous plaît j'ai essayé d'implémenter ceci sur [CKEditor] (http://ckeditor.com) mais cela ne fonctionne pas. Avez-vous une idée de comment je peux le faire fonctionner? –

0

Votre code devrait être comme suit.

<input type="text" name="color" id="color"> 
<select name="" id="change_color"> 
    <option>Choose Database Type</option> 
    <option >green</option> 
    <option >red</option> 
    <option >orange</option> 
    <option >black</option> 
</select> 
<script type="text/javascript" src="jquery.js"></script> 
<script> 
    $(document).ready(function() {  
    $('#change_color').change(function(){ 
    var color = ($(this).val()); 
    $('#color').val(color); 
    }) 
    }); 
</script> 
+0

S'il vous plaît j'ai essayé d'implémenter ceci sur [CKEditor] (http://ckeditor.com) mais cela ne fonctionne pas. Avez-vous une idée de comment je peux le faire fonctionner? –