﻿$.fn.customField = function (options) {

    var defaults = {
        allowNegatives: false,
        allowDecimal: false,
        allowComma: false,
        maxValue: 0
    };

    defaults = $.extend(defaults, options);

    $(this).keydown(function (event) {

        var key = (event.which) ? event.which : event.keyCode;
        if ((key >= 48 && key <= 57) || (key >= 96 && key <= 105) || key == 8 || key == 109 || key == 190 || key == 110 || key == 188 || key == 9) {
            if (event.shiftKey) return false;
            if (defaults.allowNegatives == false && key == 109) return false;
            if (defaults.allowDecimal == false && (key == 190 || key == 110)) return false;
            if (defaults.allowComma == false && key == 188) return false;
        }
        else if (key == 37 || key == 38 || key == 39 || key == 40 || key == 17 || key == 46 || key == 116) {
            if (event.shiftKey) return false;
        }
        else { return false; }

        if (defaults.maxValue > 0 && ((key >= 48 && key <= 57) || (key >= 96 && key <= 105))) {
            var value = $.trim($(this).val());
            value = value + '' + String.fromCharCode(key);
            if (value != '') {
                if (parseFloat(value) > parseFloat(defaults.maxValue)) {
                    return false;
                }
            }
        }
    });
};
