prototype.jsメソッドをオーバーライドする
-
05-07-2019 - |
質問
PrototypeJSのForm.Element.disable()メソッドをオーバーライドして、無効なフォーム要素にカスタムクラスを追加しようとしています。
追加しました:
Form.Element.disable = function(element) {
element = $(element);
element.blur();
element.disabled = true;
element.addClassName("disabled");
return element;}
prototype.jsをロードした後、ページに移動します-これは直接呼び出された場合に機能します。例:
Form.Element.disable("myInputBox");
ただし、呼び出した場合は元のPrototypeJSメソッドが使用されます
$("myInputBox").disable();
それは" scope"と関係があることを知っています。私はそれを定義しています-disable()メソッドの新しいインスタンスを効果的に作成していますが、元のPrototypeJSバージョンを置き換えるようにスコープをシフトする方法がわかりません。
どこがおかしいのですか?
解決
Form.Element.addMethods({
disable: function(element) {
// stuff here
}
});
そして、それが機能しない場合: http://api.prototypejs.org/ dom / Element / addMethods /
Element.addMethods(["input", "textarea", "select"], {
disable: function(element) {
// stuff here
}
});
他のヒント
Form.Element.prototype.disable = function(element) { ... }
所属していません StackOverflow