Sostituzione di un metodo prototype.js
-
05-07-2019 - |
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?
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