Hidden Input Value not updating with Jquery
When a user clicks a checkbox, I need the jquery update_flavors function to run and update the hidden input the value attribute with all the flavors.
Currently, the update_flavors function does not seem to get called.
Updated JSFiddle: https://jsfiddle.net/ecqp9nwm/7/
HTML
<div class="row">
{% assign flavors = "apple, orange, cherry" | split: ","%}
{% for flavor in flavors %}
<div class="col-md-6">
<div class="form-check">
<label class="form-check-label" for="checkbox-{{flavor | handleize }}"><input name='contact[{{flavor| handleize }}]' type="checkbox" class="checkbox-flavor form-check-input" id="checkbox-{{flavor | handleize }}"> {{flavor}}</label>
</div>
</div>
{% endfor %}
</div>
<input type="hidden" id="checkbox-flavors" name="contact[flavor]" value="">
Jquery
<script>
function update_flavors() {
var allVals = ;
$('.checkbox-flavor :checked').each(function() {
allVals.push($(this).val());
});
$('#checkbox-flavors').val(allVals);
}
$(document).ready(function(){
$(".checkbox-flavor").click(function(){
update_flavors;
});
});
</script>
Solution:
I had a space in my selector! big oversight!
$('.checkbox-flavor :checked')
should have been $('.checkbox-flavor:checked')
and I needed to add a ()
to update_flavors();
working and improved: https://jsfiddle.net/ecqp9nwm/12
function update_flavors() {
var allVals = $('.checkbox-flavor:checked').map(function() {
return $(this).val()
}).get();
$('#checkbox-flavors').val(allVals.join(', '));
}
$(document).ready(function() {
$(".checkbox-flavor").change(update_flavors);
});
jquery
|
show 4 more comments
When a user clicks a checkbox, I need the jquery update_flavors function to run and update the hidden input the value attribute with all the flavors.
Currently, the update_flavors function does not seem to get called.
Updated JSFiddle: https://jsfiddle.net/ecqp9nwm/7/
HTML
<div class="row">
{% assign flavors = "apple, orange, cherry" | split: ","%}
{% for flavor in flavors %}
<div class="col-md-6">
<div class="form-check">
<label class="form-check-label" for="checkbox-{{flavor | handleize }}"><input name='contact[{{flavor| handleize }}]' type="checkbox" class="checkbox-flavor form-check-input" id="checkbox-{{flavor | handleize }}"> {{flavor}}</label>
</div>
</div>
{% endfor %}
</div>
<input type="hidden" id="checkbox-flavors" name="contact[flavor]" value="">
Jquery
<script>
function update_flavors() {
var allVals = ;
$('.checkbox-flavor :checked').each(function() {
allVals.push($(this).val());
});
$('#checkbox-flavors').val(allVals);
}
$(document).ready(function(){
$(".checkbox-flavor").click(function(){
update_flavors;
});
});
</script>
Solution:
I had a space in my selector! big oversight!
$('.checkbox-flavor :checked')
should have been $('.checkbox-flavor:checked')
and I needed to add a ()
to update_flavors();
working and improved: https://jsfiddle.net/ecqp9nwm/12
function update_flavors() {
var allVals = $('.checkbox-flavor:checked').map(function() {
return $(this).val()
}).get();
$('#checkbox-flavors').val(allVals.join(', '));
}
$(document).ready(function() {
$(".checkbox-flavor").change(update_flavors);
});
jquery
1
stackoverflow.com/questions/9454645/… Don't repeat ids. Use classes instead.
– Taplar
Nov 20 '18 at 22:56
Where do you have an element with the IDcheckbox-flavor
to be matched with$("#checkbox-flavor")
?
– j08691
Nov 20 '18 at 22:56
Oh, good point. flavor would beapple
,orange
orcherry
(i guess?), so it's not even a dup id anyway. But still, you should use a class to avoid that issue.
– Taplar
Nov 20 '18 at 22:58
@j08691 typo, corrected, but still does not run. See js fiddle
– user2012677
Nov 20 '18 at 23:00
1
update_flavors();
You're missing your()
, or get rid of the outer anonymous function
– Taplar
Nov 20 '18 at 23:27
|
show 4 more comments
When a user clicks a checkbox, I need the jquery update_flavors function to run and update the hidden input the value attribute with all the flavors.
Currently, the update_flavors function does not seem to get called.
Updated JSFiddle: https://jsfiddle.net/ecqp9nwm/7/
HTML
<div class="row">
{% assign flavors = "apple, orange, cherry" | split: ","%}
{% for flavor in flavors %}
<div class="col-md-6">
<div class="form-check">
<label class="form-check-label" for="checkbox-{{flavor | handleize }}"><input name='contact[{{flavor| handleize }}]' type="checkbox" class="checkbox-flavor form-check-input" id="checkbox-{{flavor | handleize }}"> {{flavor}}</label>
</div>
</div>
{% endfor %}
</div>
<input type="hidden" id="checkbox-flavors" name="contact[flavor]" value="">
Jquery
<script>
function update_flavors() {
var allVals = ;
$('.checkbox-flavor :checked').each(function() {
allVals.push($(this).val());
});
$('#checkbox-flavors').val(allVals);
}
$(document).ready(function(){
$(".checkbox-flavor").click(function(){
update_flavors;
});
});
</script>
Solution:
I had a space in my selector! big oversight!
$('.checkbox-flavor :checked')
should have been $('.checkbox-flavor:checked')
and I needed to add a ()
to update_flavors();
working and improved: https://jsfiddle.net/ecqp9nwm/12
function update_flavors() {
var allVals = $('.checkbox-flavor:checked').map(function() {
return $(this).val()
}).get();
$('#checkbox-flavors').val(allVals.join(', '));
}
$(document).ready(function() {
$(".checkbox-flavor").change(update_flavors);
});
jquery
When a user clicks a checkbox, I need the jquery update_flavors function to run and update the hidden input the value attribute with all the flavors.
Currently, the update_flavors function does not seem to get called.
Updated JSFiddle: https://jsfiddle.net/ecqp9nwm/7/
HTML
<div class="row">
{% assign flavors = "apple, orange, cherry" | split: ","%}
{% for flavor in flavors %}
<div class="col-md-6">
<div class="form-check">
<label class="form-check-label" for="checkbox-{{flavor | handleize }}"><input name='contact[{{flavor| handleize }}]' type="checkbox" class="checkbox-flavor form-check-input" id="checkbox-{{flavor | handleize }}"> {{flavor}}</label>
</div>
</div>
{% endfor %}
</div>
<input type="hidden" id="checkbox-flavors" name="contact[flavor]" value="">
Jquery
<script>
function update_flavors() {
var allVals = ;
$('.checkbox-flavor :checked').each(function() {
allVals.push($(this).val());
});
$('#checkbox-flavors').val(allVals);
}
$(document).ready(function(){
$(".checkbox-flavor").click(function(){
update_flavors;
});
});
</script>
Solution:
I had a space in my selector! big oversight!
$('.checkbox-flavor :checked')
should have been $('.checkbox-flavor:checked')
and I needed to add a ()
to update_flavors();
working and improved: https://jsfiddle.net/ecqp9nwm/12
function update_flavors() {
var allVals = $('.checkbox-flavor:checked').map(function() {
return $(this).val()
}).get();
$('#checkbox-flavors').val(allVals.join(', '));
}
$(document).ready(function() {
$(".checkbox-flavor").change(update_flavors);
});
jquery
jquery
edited Nov 21 '18 at 2:28
user2012677
asked Nov 20 '18 at 22:43
user2012677user2012677
1,39141436
1,39141436
1
stackoverflow.com/questions/9454645/… Don't repeat ids. Use classes instead.
– Taplar
Nov 20 '18 at 22:56
Where do you have an element with the IDcheckbox-flavor
to be matched with$("#checkbox-flavor")
?
– j08691
Nov 20 '18 at 22:56
Oh, good point. flavor would beapple
,orange
orcherry
(i guess?), so it's not even a dup id anyway. But still, you should use a class to avoid that issue.
– Taplar
Nov 20 '18 at 22:58
@j08691 typo, corrected, but still does not run. See js fiddle
– user2012677
Nov 20 '18 at 23:00
1
update_flavors();
You're missing your()
, or get rid of the outer anonymous function
– Taplar
Nov 20 '18 at 23:27
|
show 4 more comments
1
stackoverflow.com/questions/9454645/… Don't repeat ids. Use classes instead.
– Taplar
Nov 20 '18 at 22:56
Where do you have an element with the IDcheckbox-flavor
to be matched with$("#checkbox-flavor")
?
– j08691
Nov 20 '18 at 22:56
Oh, good point. flavor would beapple
,orange
orcherry
(i guess?), so it's not even a dup id anyway. But still, you should use a class to avoid that issue.
– Taplar
Nov 20 '18 at 22:58
@j08691 typo, corrected, but still does not run. See js fiddle
– user2012677
Nov 20 '18 at 23:00
1
update_flavors();
You're missing your()
, or get rid of the outer anonymous function
– Taplar
Nov 20 '18 at 23:27
1
1
stackoverflow.com/questions/9454645/… Don't repeat ids. Use classes instead.
– Taplar
Nov 20 '18 at 22:56
stackoverflow.com/questions/9454645/… Don't repeat ids. Use classes instead.
– Taplar
Nov 20 '18 at 22:56
Where do you have an element with the ID
checkbox-flavor
to be matched with $("#checkbox-flavor")
?– j08691
Nov 20 '18 at 22:56
Where do you have an element with the ID
checkbox-flavor
to be matched with $("#checkbox-flavor")
?– j08691
Nov 20 '18 at 22:56
Oh, good point. flavor would be
apple
, orange
or cherry
(i guess?), so it's not even a dup id anyway. But still, you should use a class to avoid that issue.– Taplar
Nov 20 '18 at 22:58
Oh, good point. flavor would be
apple
, orange
or cherry
(i guess?), so it's not even a dup id anyway. But still, you should use a class to avoid that issue.– Taplar
Nov 20 '18 at 22:58
@j08691 typo, corrected, but still does not run. See js fiddle
– user2012677
Nov 20 '18 at 23:00
@j08691 typo, corrected, but still does not run. See js fiddle
– user2012677
Nov 20 '18 at 23:00
1
1
update_flavors();
You're missing your ()
, or get rid of the outer anonymous function– Taplar
Nov 20 '18 at 23:27
update_flavors();
You're missing your ()
, or get rid of the outer anonymous function– Taplar
Nov 20 '18 at 23:27
|
show 4 more comments
1 Answer
1
active
oldest
votes
Currently your checkboxes have no values to be added. They just have labels.
This site is such a pain in the hind quarters to post any sort of solution to, but try something like this:
function updateFlavors(e) {
console.log("update");
var checks = $(".checkbox-flavor:checked");
var vals = $.map(checks, function(elem, i) {
var inp = $(elem);
return inp.val();
});
$('#checkbox-flavors').val(vals.join(", "));}
$(document).ready(function() {
$(".checkbox-flavor").each(function() {
var inp = $(this);
inp.val(inp.parent().find("label").text());
})
$(".check_holder").on("change", ".checkbox-flavor", updateFlavors);
});
By using the change handler, you update when an item is checked or unchecked.
Also, by assigning the handler to a parent element, you only have one handler running instead of one for every input element.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53402703%2fhidden-input-value-not-updating-with-jquery%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Currently your checkboxes have no values to be added. They just have labels.
This site is such a pain in the hind quarters to post any sort of solution to, but try something like this:
function updateFlavors(e) {
console.log("update");
var checks = $(".checkbox-flavor:checked");
var vals = $.map(checks, function(elem, i) {
var inp = $(elem);
return inp.val();
});
$('#checkbox-flavors').val(vals.join(", "));}
$(document).ready(function() {
$(".checkbox-flavor").each(function() {
var inp = $(this);
inp.val(inp.parent().find("label").text());
})
$(".check_holder").on("change", ".checkbox-flavor", updateFlavors);
});
By using the change handler, you update when an item is checked or unchecked.
Also, by assigning the handler to a parent element, you only have one handler running instead of one for every input element.
add a comment |
Currently your checkboxes have no values to be added. They just have labels.
This site is such a pain in the hind quarters to post any sort of solution to, but try something like this:
function updateFlavors(e) {
console.log("update");
var checks = $(".checkbox-flavor:checked");
var vals = $.map(checks, function(elem, i) {
var inp = $(elem);
return inp.val();
});
$('#checkbox-flavors').val(vals.join(", "));}
$(document).ready(function() {
$(".checkbox-flavor").each(function() {
var inp = $(this);
inp.val(inp.parent().find("label").text());
})
$(".check_holder").on("change", ".checkbox-flavor", updateFlavors);
});
By using the change handler, you update when an item is checked or unchecked.
Also, by assigning the handler to a parent element, you only have one handler running instead of one for every input element.
add a comment |
Currently your checkboxes have no values to be added. They just have labels.
This site is such a pain in the hind quarters to post any sort of solution to, but try something like this:
function updateFlavors(e) {
console.log("update");
var checks = $(".checkbox-flavor:checked");
var vals = $.map(checks, function(elem, i) {
var inp = $(elem);
return inp.val();
});
$('#checkbox-flavors').val(vals.join(", "));}
$(document).ready(function() {
$(".checkbox-flavor").each(function() {
var inp = $(this);
inp.val(inp.parent().find("label").text());
})
$(".check_holder").on("change", ".checkbox-flavor", updateFlavors);
});
By using the change handler, you update when an item is checked or unchecked.
Also, by assigning the handler to a parent element, you only have one handler running instead of one for every input element.
Currently your checkboxes have no values to be added. They just have labels.
This site is such a pain in the hind quarters to post any sort of solution to, but try something like this:
function updateFlavors(e) {
console.log("update");
var checks = $(".checkbox-flavor:checked");
var vals = $.map(checks, function(elem, i) {
var inp = $(elem);
return inp.val();
});
$('#checkbox-flavors').val(vals.join(", "));}
$(document).ready(function() {
$(".checkbox-flavor").each(function() {
var inp = $(this);
inp.val(inp.parent().find("label").text());
})
$(".check_holder").on("change", ".checkbox-flavor", updateFlavors);
});
By using the change handler, you update when an item is checked or unchecked.
Also, by assigning the handler to a parent element, you only have one handler running instead of one for every input element.
answered Nov 21 '18 at 3:25
Devi8Devi8
1
1
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53402703%2fhidden-input-value-not-updating-with-jquery%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
stackoverflow.com/questions/9454645/… Don't repeat ids. Use classes instead.
– Taplar
Nov 20 '18 at 22:56
Where do you have an element with the ID
checkbox-flavor
to be matched with$("#checkbox-flavor")
?– j08691
Nov 20 '18 at 22:56
Oh, good point. flavor would be
apple
,orange
orcherry
(i guess?), so it's not even a dup id anyway. But still, you should use a class to avoid that issue.– Taplar
Nov 20 '18 at 22:58
@j08691 typo, corrected, but still does not run. See js fiddle
– user2012677
Nov 20 '18 at 23:00
1
update_flavors();
You're missing your()
, or get rid of the outer anonymous function– Taplar
Nov 20 '18 at 23:27