gpt4 book ai didi

javascript - 覆盖 Javascript 中的方法

转载 作者:行者123 更新时间:2023-11-30 05:32:47 25 4
gpt4 key购买 nike

我最近开始使用 JsFormValidatorBundle在 symfony 上验证我的表格。唯一的问题是我需要使用 Ajax 发送这些表单,不幸的是由于某种原因 JsFormValidatorBundle 强制通过重新加载页面来发送表单。

所以现在我正在尝试覆盖看起来像这样的函数:

    function FpJsCustomizeMethods() {

...

this.submitForm = function (event) {
//noinspection JSCheckFunctionSignatures
FpJsFormValidator.each(this, function (item) {
var element = item.jsFormValidator;
if (event) {
event.preventDefault();
}
element.validateRecursively();
if (FpJsFormValidator.ajax.queue) {
if (event) {
event.preventDefault();
}
FpJsFormValidator.ajax.callbacks.push(function () {
element.onValidate.apply(element.domNode, [FpJsFormValidator.getAllErrors(element, {}), event]);
if (element.isValid()) {
item.submit();
}
});
} else {
element.onValidate.apply(element.domNode, [FpJsFormValidator.getAllErrors(element, {}), event]);
if (element.isValid()) {
item.submit();
}
}
});
};

....
}

如果我删除 item.submit() 它会完美运行。

那么如何覆盖它呢?

full script

最佳答案

您只需要创建一个新函数并通过其原型(prototype)扩展父函数。

也许这个代码块可以解释你需要做什么。

function Parent() {

this.a = function() {
alert("i am here");
}

this.submitForm = function() {
alert("i am wrong one here");
}

}

function Child () {

//we need to override function submitForm with right one
this.submitForm = function() {
alert("i am right one here");
}

}

Child.prototype = new Parent;

var c = new Child();
//other parent methods are still accessible.
c.a();
//method submitForm is overriden with the one we defined
c.submitForm();

查看实际效果 here

关于javascript - 覆盖 Javascript 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25865525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com