Domanda

Sto tentando di sovrascrivere il metodo Form.Element.disable () in PrototypeJS in modo da aggiungere una classe personalizzata agli elementi del modulo disabilitati.

Ho aggiunto:

Form.Element.disable = function(element) {
element = $(element);
element.blur();
element.disabled = true;
element.addClassName("disabled");
return element;}

alla pagina dopo aver caricato prototype.js: funziona se chiamato direttamente, ad esempio

Form.Element.disable("myInputBox");

Ma se chiamo

viene utilizzato il metodo PrototypeJS originale
$("myInputBox").disable();

So che ha a che fare con il " scope " in cui lo sto definendo: sto effettivamente creando una nuova istanza del metodo disable (), ma non ho idea di come spostare l'ambito in modo che sostituisca la versione originale di PrototypeJS.

Dove sbaglio?

È stato utile?

Soluzione

Form.Element.addMethods({
    disable: function(element) {
        // stuff here
    }
});

E se non funziona: http://api.prototypejs.org/ dom / Elemento / addMethods /

Element.addMethods(["input", "textarea", "select"], {
    disable: function(element) {
        // stuff here
    }
});

Altri suggerimenti

Form.Element.prototype.disable = function(element) { ... }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top