0

我试图在 YUI(或 Alloy UI)中更改 _onFormReset 方法 - 我认为这是常见的 JavaScript (OOP) 事情,但我是 JS OOP 和 YUI 的菜鸟(直到现在一直在使用一些 JQuery) - 我怎样才能更改功能方法(保持其他方法不变)?

例如;

当前方法如下所示:

_onFormReset: function(event) {
    var instance = this;
    instance.resetAllFields();
},

(来源:http: //alloyui.com/api/files/alloy-ui_src_aui-form-validator_js_aui-form-validator.js.html#l1192

但我希望它是这样的:

_onFormReset: function(event) {
    var instance = this;
    instance.resetAllFields();
    /* PSEUDO:
**a.) action is logged (ajax call to DB)
b.) all fields in form are reset (default behaviour) + form get's a new anti CSFR UID via ajax
c.) notification is shown (like that message in my example but let's say: Form reseted!)
d.) (Submit button reappears)**
...

*/
},

我试过类似的东西:

/* trying to hijack thingZ */

var FormReset = Y.Component.create({
// component name
NAME : 'form-validator-reset',

EXTENDS : Y.Base,

// Base component's method which extends
prototype : {
    _onFormReset: function(event) {
            var instance = this;
            instance.resetAllFields();
            Y.one("#submitit").setHTML("<h4>Thanks, form submitted ok</h4>");
        }
    }
});

但没有成功。

我查看了文档但找不到方法,而且似乎我缺少 OOP Javascript 基础知识:(

有人可以帮我“抓鱼”吗:)

尝试学习好的(OOP)JavaScript 很长一段时间,在网上阅读了很多,但对我来说最好的方法是通过编码学习,现在我真的陷入了困境......

所以我希望有一些东西可以在我的所有表单中用于单击重置按钮时(以同样的方式我也会更改提交) - OOP 方法 - 附加到默认重置功能,以“我的”方式升级它。

4

2 回答 2

0

好的,在重新考虑之后,我想 preventDefault 对我来说没问题(我会尝试用其他案例来学习 OOP JS :))。

这是(n00by)解决方案:

  1. 将#resetit 添加到重置按钮

  2. 添加代码:

    var ressetterr = Y.one("#resetit");

    Y.one(ressetterr).on("click", function(e){
        console.log("resetit");
        e.preventDefault();
    
     });
    
于 2014-08-22T07:33:02.243 回答
0

看起来你正试图以错误的方式解决这个问题。除非您只是将其作为覆盖方法的练习,否则如果您要做的只是打印出谢谢,那么您真的不应该这样做。

此外,如果您希望感谢用户提交,您应该在用户提交表单时尝试这样做,而不是在表单重置时。为此,您需要为表单的“提交”事件订阅一个函数。

A.one("#my_form").on("submit", function() {
    Y.one("#submitit").setHTML("<h4>Thanks, form submitted ok</h4>");
});
于 2014-08-22T00:36:25.973 回答