Hidden Input Value not updating with Jquery











up vote
-2
down vote

favorite












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);
});









share|improve this question




















  • 1




    stackoverflow.com/questions/9454645/… Don't repeat ids. Use classes instead.
    – Taplar
    2 days ago










  • Where do you have an element with the ID checkbox-flavor to be matched with $("#checkbox-flavor")?
    – j08691
    2 days ago










  • 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
    2 days ago












  • @j08691 typo, corrected, but still does not run. See js fiddle
    – user2012677
    2 days ago






  • 1




    update_flavors(); You're missing your (), or get rid of the outer anonymous function
    – Taplar
    2 days ago

















up vote
-2
down vote

favorite












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);
});









share|improve this question




















  • 1




    stackoverflow.com/questions/9454645/… Don't repeat ids. Use classes instead.
    – Taplar
    2 days ago










  • Where do you have an element with the ID checkbox-flavor to be matched with $("#checkbox-flavor")?
    – j08691
    2 days ago










  • 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
    2 days ago












  • @j08691 typo, corrected, but still does not run. See js fiddle
    – user2012677
    2 days ago






  • 1




    update_flavors(); You're missing your (), or get rid of the outer anonymous function
    – Taplar
    2 days ago















up vote
-2
down vote

favorite









up vote
-2
down vote

favorite











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);
});









share|improve this question















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 2 days ago

























asked 2 days ago









user2012677

1,37341435




1,37341435








  • 1




    stackoverflow.com/questions/9454645/… Don't repeat ids. Use classes instead.
    – Taplar
    2 days ago










  • Where do you have an element with the ID checkbox-flavor to be matched with $("#checkbox-flavor")?
    – j08691
    2 days ago










  • 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
    2 days ago












  • @j08691 typo, corrected, but still does not run. See js fiddle
    – user2012677
    2 days ago






  • 1




    update_flavors(); You're missing your (), or get rid of the outer anonymous function
    – Taplar
    2 days ago
















  • 1




    stackoverflow.com/questions/9454645/… Don't repeat ids. Use classes instead.
    – Taplar
    2 days ago










  • Where do you have an element with the ID checkbox-flavor to be matched with $("#checkbox-flavor")?
    – j08691
    2 days ago










  • 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
    2 days ago












  • @j08691 typo, corrected, but still does not run. See js fiddle
    – user2012677
    2 days ago






  • 1




    update_flavors(); You're missing your (), or get rid of the outer anonymous function
    – Taplar
    2 days ago










1




1




stackoverflow.com/questions/9454645/… Don't repeat ids. Use classes instead.
– Taplar
2 days ago




stackoverflow.com/questions/9454645/… Don't repeat ids. Use classes instead.
– Taplar
2 days ago












Where do you have an element with the ID checkbox-flavor to be matched with $("#checkbox-flavor")?
– j08691
2 days ago




Where do you have an element with the ID checkbox-flavor to be matched with $("#checkbox-flavor")?
– j08691
2 days ago












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
2 days ago






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
2 days ago














@j08691 typo, corrected, but still does not run. See js fiddle
– user2012677
2 days ago




@j08691 typo, corrected, but still does not run. See js fiddle
– user2012677
2 days ago




1




1




update_flavors(); You're missing your (), or get rid of the outer anonymous function
– Taplar
2 days ago






update_flavors(); You're missing your (), or get rid of the outer anonymous function
– Taplar
2 days ago














1 Answer
1






active

oldest

votes

















up vote
0
down vote













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.






share|improve this answer








New contributor




Devi8 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.


















    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',
    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
    });


    }
    });














     

    draft saved


    draft discarded


















    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








    up vote
    0
    down vote













    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.






    share|improve this answer








    New contributor




    Devi8 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.






















      up vote
      0
      down vote













      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.






      share|improve this answer








      New contributor




      Devi8 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.




















        up vote
        0
        down vote










        up vote
        0
        down vote









        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.






        share|improve this answer








        New contributor




        Devi8 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.









        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.







        share|improve this answer








        New contributor




        Devi8 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.









        share|improve this answer



        share|improve this answer






        New contributor




        Devi8 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.









        answered 2 days ago









        Devi8

        1




        1




        New contributor




        Devi8 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.





        New contributor





        Devi8 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.






        Devi8 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
        Check out our Code of Conduct.






























             

            draft saved


            draft discarded



















































             


            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            Berounka

            Different font size/position of beamer's navigation symbols template's content depending on regular/plain...

            Sphinx de Gizeh