我试图在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方法 - 附加到默认重置功能,在“我的”中升级它方式。
答案 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)解决方案:
将#resetit添加到重置按钮
添加代码:
var ressetterr = Y.one(&#34; #resetit&#34;);
Y.one(ressetterr).on("click", function(e){
console.log("resetit");
e.preventDefault();
});