1

I want to display option dynamically after from input text before comma but it is not displaying the option in select tag. For eg if the user types hello and then types comma (,) the value before comma should display on option inside select tag with multiple attributes.

Here is my code:

var skills = document.querySelector('#skills');
var skillhave = document.querySelector('#skill');
var skillshaving = [];

skills.addEventListener('keyup', function(event) {
  if (event.keyCode === 188) {

    if (this.value.length < 2) {
      alert("skill required");
      this.value = "";
    } else {
      var skill = this.value.substring(0, this.value.length - 1);
      skillshaving.push(skill);
      this.value = "";
      reloadskills();
    }
  }

});

function reloadskills() {
  skillhave.innerHTML = "";
  for (var i = 0; i < skillshaving.length; i++) {
    var opt = document.createElement('option');
    opt.value += $ {
      skillshaving[i]
    };
    opt.innerHTML += $ {
      skillshaving[i]
    };
    skillhave.appendChild(opt);
  }
}
<input type="text" class="form-control" placeholder="Enter skill" name="skills" id="skills"> <!-- for entering skills via text -->
<select name="" id="skill" multiple></select> <!-- for displaying it in option tag -->
tanmay_garg
  • 377
  • 1
  • 13
joshua
  • 177
  • 1
  • 12

1 Answers1

1

You are having syntax error while assigning opt.value & opt.innerHTML. I have updated code as below.

opt.value = skillshaving[i]; // Updated code
opt.innerHTML = skillshaving[i]; // Updated code

Check output below.

var skills = document.querySelector('#skills');
var skillhave = document.querySelector('#skill');
var skillshaving = [];

skills.addEventListener('keyup', function(event) {
  if (event.keyCode === 188) {

    if (this.value.length < 2) {
      alert("skill required");
      this.value = "";
    } else {
      var skill = this.value.substring(0, this.value.length - 1);
      skillshaving.push(skill);
      this.value = "";
      //reloadskills();
      addSkills(skill);
    }
  }
});

//function reloadskills() {
//  skillhave.innerHTML = "";
//  for (var i = 0; i < skillshaving.length; i++) {
// var opt = document.createElement('option');
// opt.value = skillshaving[i]; // Updated code
// opt.innerHTML = skillshaving[i]; // Updated code
// skillhave.appendChild(opt);
//  }
//}

function addSkills(skill) {      
  var opt = document.createElement('option');
  opt.value = skill;
  opt.innerHTML = skill;
  opt.selected = true;
  skillhave.appendChild(opt);
}
<input type="text" class="form-control" placeholder="Enter skill" name="skills" id="skills"> <!--for entering skills via text -->

<select name="" id="skill" multiple></select>
<!--for diplaying it in option tag -->
Karan
  • 12,059
  • 3
  • 24
  • 40