You're currently binding directly to the DOM element, but that gets replaced by your innerHTML
assignment, thereby also losing the event binding (it's a new DOM element).
What you want is to use a delegated ("live") event. Have a look at the jQuery on
function, it unifies nicely all event handling patterns.
$('#weekcount').on('keyup', '#numweeks', function(event) {
var date = $('#datepicker').val();
var numWeeks = $('#numweeks').val();
change(calculate(date, numWeeks));
});