Friday, November 08, 2013

Evitar ir atrás en la navegación cuando se usa [backspace] en un input tipo number

Parche para evitar que vuelva atrás el navegador cuando se edita en el campo input tipo número.
Además se completa la operación, eliminando el último número tipeado.


$('input[type=number]').on('keydown', function(e) {
    var key = e.which || e.keyCode || e.charCode;
    if (key === 8) {
        var s = $(this).val();
        s = s.substring(0, s.length - 1);
        $(this).val(s);
        return false;
    }
});

Saturday, February 16, 2013

Esquema para crear objetos instanciable para javascript con jQuery

Con este esquema puedes crear objetos instanciables en Javascript usando jQuery.
Su uso es muy simple, sólo debes copiar el siguiente código y cambiar las variables que están en mayúsculas.

El esquema

// Helper. Sólo usarlo una vez. Esto resuelve varios problemas con objetos en js.
if ( typeof Object.create !== 'function' ) {
    Object.create = function( obj ) {
        function F() {};
        F.prototype = obj;
        return new F();
    };
}

// Esquema para objetos javascript.
(function(){
    var OBJ_NAME = {
        props: {},
        init: function(props){
            this.props = $.extend({}, this.props, props);
            return this;
        }
    };

    // Para instanciar y ejecutar constructor.
    new_OBJ_NAME = function(props){
        var REL_OBJ_NAME = Object.create(OBJ_NAME);
        return REL_OBJ_NAME.init(props);
    };
})();

// Uso.
props = {/* Las propiedades*/};
obj = new_OBJ_NAME(props);

Ejemplo

(function(){
    var mi_objeto = {
        props: {prop1 : 1, prop2 : 2},

        init: function(props){
            this.props = $.extend({}, this.props, props);
            return this;
        },

        sumar: function(){
            return this.props.prop1 + this.props.prop2;
        }
    };
    new_mi_objeto = function(props){
        var mi_objeto_instanciado = Object.create(mi_objeto);
        return mi_objeto_instanciado.init(props);
    };
})();

// Uso.
// Usamos propiedades por defecto.
obj1 = new_mi_objeto();
console.log(obj1.sumar());

// Usamos propiedades personalizadas.
props = {prop1 : 1234, prop2 : 8876};
obj2 = new_mi_objeto(props);
console.log(obj2.sumar());

Créditos