Reputation: 7152
I have a simple string of code. I want to show a default value when the page is loaded where the function numResults()
is. At some point I want to update numResults()
with a new value and then change the string without reloading the page.
$('#step1').before('Showing results 1 - ' + numResults());
function numResults(value) {
var results = 10; // default number
if (value) {
return value; // show updated value
} else {
return results; // show default
}
}
Upvotes: 1
Views: 207
Reputation: 87
First of all, close your if tag before start else. Well, if you're trying to do something simple, try this:
$(function () {
$("#myText").val(numResults());
$("#myButton").click(function(){
$("#myText").val(numResults("123"));
});
});
function numResults(value) {
var results = 10; // default number
if (value) {
return value; // show updated value
}
else {
return results; // show default
}
}
Upvotes: 0
Reputation: 7403
This is a quintessential use case for knockout.js.
Running example at: http://jsfiddle.net/55fXu/1/
<div data-bind="text:numResults"/>
<script>
$(function() {
function AppViewModel() {
this.numResults = ko.observable(10);
}
ko.applyBindings(new AppViewModel());
});
</script>
Upvotes: 2
Reputation: 664538
I think you can utilize a jQuery.Callbacks
object for this:
// flags: store latest value, and prevent same callback adding multiple times
var resultNumberChanged = $.Callbacks("memory unique");
resultNumberChanged.fire(10); // init with "default number"
resultNumberChanged.add(function(val) {
$('#step1').before('Showing results 1 - ' + val); // update each time it changes
}); // will also be fired immediately, as there is the default value already
// then, at any point, e.g. inside the numResult function when there is a parameter
…
resultNumberChanged.fire(newvalue);
Upvotes: 1