Reputation: 206
I am trying to push several items from an input bar into an array, as seperate items. However, I can only push them as one combined item.
So even though I am pushing 3 names into the array, they will be one element in the array instead of three individual elements.
My question differs from questions regarding pushing multiple items into an array, since my problem is more about how to push elements from input bar into array as seperate items
$("#people").on('click', '.list-group-item', function(){
var peopleName = $(this).text();
var input = $("#friendsNames");
input.val(input.val() + peopleName + " ");
$("#button").click(function(){
//How do I grap each individual name that has been added to input, and push it into the array?
var allNames = [];
allNames.push();
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul class="list-group-item" id="people">
<li class="list-group-item"><a href="#">Name1</a></li>
<li class="list-group-item"><a href="#">Name2</a></li>
<li class="list-group-item"><a href="#">Name3</a></li>
<li class="list-group-item"><a href="#">Name4</a></li>
</ul>
<input type="text" name="namesOfFriend" id="friendsNames" value="" />
<button id="button">Button</button>
Upvotes: 0
Views: 781
Reputation: 22510
Try this Array#push
inside the click event.And declare the array as global
.And declare the button click event in outside, not with inside people
click
var allNames = [];
$("#people").on('click', '.list-group-item', function() {
var peopleName = $(this).text();
var input = $("#friendsNames");
input.val(input.val() + peopleName + " ");
allNames.push(peopleName);
});
$("#button").click(function() {
console.log(allNames)
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul class="list-group-item" id="people">
<li class="list-group-item"><a href="#">Name1</a></li>
<li class="list-group-item"><a href="#">Name2</a></li>
<li class="list-group-item"><a href="#">Name3</a></li>
<li class="list-group-item"><a href="#">Name4</a></li>
</ul>
<input type="text" name="namesOfFriend" id="friendsNames" value="" />
<button id="button">Button</button>
Or use with split(" ")
method from input to array .Its enough to create the array from input
value
$("#people").on('click', '.list-group-item', function() {
var peopleName = $(this).text();
var input = $("#friendsNames");
input.val(input.val() + peopleName + " ");
});
$("#button").click(function() {
var allNames = $("#friendsNames").val().trim().split(" ")
console.log(allNames)
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul class="list-group-item" id="people">
<li class="list-group-item"><a href="#">Name1</a></li>
<li class="list-group-item"><a href="#">Name2</a></li>
<li class="list-group-item"><a href="#">Name3</a></li>
<li class="list-group-item"><a href="#">Name4</a></li>
</ul>
<input type="text" name="namesOfFriend" id="friendsNames" value="" />
<button id="button">Button</button>
Upvotes: 3
Reputation: 2266
Using split & concat:
$("#people").on('click', '.list-group-item', function(){
var peopleName = $(this).text();
var input = $("#friendsNames");
input.val(input.val() + peopleName + " ");
$("#button").click(function(){
//How do I grap each individual name that has been added to input, and push it into the array?
var allNames = [];
var f = $("#friendsNames").val().trim();
allNames = allNames.concat(f.split(' '));
console.log(allNames)
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul class="list-group-item" id="people">
<li class="list-group-item"><a href="#">Name1</a></li>
<li class="list-group-item"><a href="#">Name2</a></li>
<li class="list-group-item"><a href="#">Name3</a></li>
<li class="list-group-item"><a href="#">Name4</a></li>
</ul>
<input type="text" name="namesOfFriend" id="friendsNames" value="" />
<button id="button">Button</button>
Upvotes: 1
Reputation: 29
You need to define your array outside of the click event because you always empty it when you click on it.
Additionaly you need a variable to push into the array.
for example allNames.push(input);
Upvotes: 0