質問

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) { ... }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top