When you use txt = txt++; you are replacing the next value with the old value. You need to use just txt++. Also, I think it's better if you give an id to the form to make sure that you are targetting the right form because ids are/must unique. See the working snippets below please:
function myFunction() {
var coffee = document.getElementById('cart_form');
var txt = 0;
var i;
for (i = 0; i < coffee.length; i++) {
if (coffee[i].checked) {
txt++;
}
}
document.getElementById("order").value = txt;
}
<form method='post' action='' id='cart_form'>
<label> Select the project category you will like to float </label>
<div class="form-group">
<input type="checkbox" name="coffee" value="3">Web Development
<input type="checkbox" name="coffee" value="1">App Development
<input type="checkbox" name="coffee" value="1">SEO Ninja
<input type="checkbox" name="coffee" value="1">The Social media geek
<input type="checkbox" name="coffee" value="1">Design Wizard
<input type="checkbox" name="coffee" value="1">The contest of Content
<input type="checkbox" name="coffee" value="1">Marketing Marathon
<input type="checkbox" name="coffee" value="1">Recruitment Hackathon
</div>
<input type="button" onclick="myFunction()" value="Add to cart">
<input type="text" id="order" size="50">
<div class="row">
<div class="form-group">
<ul class="actions">
<input type="submit" name="submit3" value="Register">
</ul>
</div>
</div>
</form>
As you can see I've also added a opening tag for the form element.
You can run the working snippet from here or you can take a look JSFIDDLE to test it if you want.
An alternative without the old onclick would be too use addEventListener for the click like this:
document.getElementById("add_to_cart").addEventListener("click", function() {
var coffee = document.getElementById('cart_form');
var txt = 0;
var i;
for (i = 0; i < coffee.length; i++) {
if (coffee[i].checked) {
txt++;
}
}
document.getElementById("order").value = txt;
});
<form method='post' action='' id='cart_form'>
<label> Select the project category you will like to float </label>
<div class="form-group">
<input type="checkbox" name="coffee" value="3">Web Development
<input type="checkbox" name="coffee" value="1">App Development
<input type="checkbox" name="coffee" value="1">SEO Ninja
<input type="checkbox" name="coffee" value="1">The Social media geek
<input type="checkbox" name="coffee" value="1">Design Wizard
<input type="checkbox" name="coffee" value="1">The contest of Content
<input type="checkbox" name="coffee" value="1">Marketing Marathon
<input type="checkbox" name="coffee" value="1">Recruitment Hackathon
</div>
<input type="button" id='add_to_cart' value="Add to cart">
<input type="text" id="order" size="50">
<div class="row">
<div class="form-group">
<ul class="actions">
<input type="submit" name="submit3" value="Register">
</ul>
</div>
</div>
</form>
I've seen you tagged this as jQuery too. Here's an alternative using $(":checkbox:checked").length:
$('#add_to_cart').on('click', function(){
$('#order').val($("#cart_form :checkbox:checked").length);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form method='post' action='' id='cart_form'>
<label> Select the project category you will like to float </label>
<div class="form-group">
<input type="checkbox" name="coffee" value="3">Web Development
<input type="checkbox" name="coffee" value="1">App Development
<input type="checkbox" name="coffee" value="1">SEO Ninja
<input type="checkbox" name="coffee" value="1">The Social media geek
<input type="checkbox" name="coffee" value="1">Design Wizard
<input type="checkbox" name="coffee" value="1">The contest of Content
<input type="checkbox" name="coffee" value="1">Marketing Marathon
<input type="checkbox" name="coffee" value="1">Recruitment Hackathon
</div>
<input type="button" id='add_to_cart' value="Add to cart">
<input type="text" id="order" size="50">
<div class="row">
<div class="form-group">
<ul class="actions">
<input type="submit" name="submit3" value="Register">
</ul>
</div>
</div>
</form>
alert($("form").length)