Skip to content

Instantly share code, notes, and snippets.

@mgalante
Created July 3, 2013 13:37
Show Gist options
  • Select an option

  • Save mgalante/5917906 to your computer and use it in GitHub Desktop.

Select an option

Save mgalante/5917906 to your computer and use it in GitHub Desktop.
knockout js binding for jQuery autoNumeric
;(function ($) {
var getElementValue = function(el) {
return parseFloat(el.autoNumeric('get'), 10);
}
var getModelValue = function(accessor) {
return parseFloat(ko.utils.unwrapObservable(accessor()), 10);
}
ko.bindingHandlers.autoNumeric = {
init: function (el, valueAccessor, bindingsAccessor, viewModel) {
var $el = $(el),
bindings = bindingsAccessor(),
settings = bindings.settings || { aSign: '' },
value = valueAccessor();
function updateModelValue() {
value(getElementValue($el));
};
if (settings.pSign === 's') {
settings.aSign = ' ' + settings.aSign;
} else {
settings.aSign = settings.aSign + ' ';
}
$el.autoNumeric(settings);
$el.autoNumeric('set', getModelValue(value));
$el.change(updateModelValue);
},
update: function (el, valueAccessor, bindingsAccessor, viewModel) {
var $el = $(el),
newValue = getModelValue(valueAccessor()),
elementValue = getElementValue($el),
valueHasChanged = (newValue != elementValue);
if ((newValue === 0) && (elementValue !== 0) && (elementValue !== "0")) {
valueHasChanged = true;
}
if (valueHasChanged) {
$el.autoNumeric('set', newValue);
setTimeout(function () { $el.change() }, 0);
}
}
};
})(jQuery);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment