覆盖prototype.js方法

时间:2009-11-26 10:46:23

标签: javascript object prototypejs

我正在尝试覆盖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();

我知道这与我定义它的“范围”有关 - 我正在创建一个新的disable()方法实例,但我不知道如何移动范围以便它取代原来的PrototypeJS版本。

我哪里错了?

2 个答案:

答案 0 :(得分:3)

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
    }
});

答案 1 :(得分:-1)

Form.Element.prototype.disable = function(element) { ... }