更改YUI(或AlloyUI)方法行为

时间:2014-08-18 13:07:17

标签: javascript oop methods yui alloy-ui

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

例如

;

目前的方法如下:

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

(src: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方法 - 附加到默认重置功能,在“我的”中升级它方式。

2 个答案:

答案 0 :(得分:0)

看起来你正试图以错误的方式解决这个问题。除非你只是将这个作为一种覆盖方法的练习,否则你真的不应该这样做,如果所有你想要做的就是打印一个感谢你。

此外,如果您希望感谢用户提交,则应在用户提交表单时尝试执行此操作,而不是在重置表单时执行此操作。为此,您需要为“提交”功能订阅功能。形式的事件。

A.one("#my_form").on("submit", function() {
    Y.one("#submitit").setHTML("<h4>Thanks, form submitted ok</h4>");
});

答案 1 :(得分:0)

好的,重新思考后,我认为preventDefault对我来说没问题(我会尝试用其他情况学习OOP JS :))。

这是(一个n00by)解决方案:

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

  2. 添加代码:

    var ressetterr = Y.one(&#34; #resetit&#34;);

    Y.one(ressetterr).on("click", function(e){
        console.log("resetit");
        e.preventDefault();
    
     });