ExtJs,自定义TextField's的getValue()函数在提交表单时不被调用
ExtJs, custom TextField's getValue() function not being called when form is submitted
我有一个扩展Ext.form.TextField
(ExtJs 3.1.1)的自定义文本字段。我已经覆盖getValue
提交一个计算值,而不是在超类的原始值。直接调用getValue
,返回值正确。但是,当提交父表单时,根本不调用getValue
(getValue
方法中的调试消息不会出现在控制台中)。如何重写提交表单时返回的值?难道getValue
不是重写的正确方法吗?
下面是类的一般布局(我不能提供实际的代码):
MyField = Ext.extend(Ext.form.Textfield, {
constructor: function(config) {
[initialize some basic variables....]
MyField.superclass.constructor.call(this, config);
},
initComponent : function() {
this.on('keypress', this.handler, this);
},
handler : function(field, event, args) {
[set an internal value this.myValue based on superclass value]
},
getValue : function () {return this.myValue;}
});
在计算myValue
并在调用getValue
时返回它方面,上面的工作很好。然而,当添加在表单中,在Ext.form.TextField
的值被返回,我也注意到,MyField.getValue
是不被调用在父FormPanel对象上调用FormPanel.getForm().submit()
。
如果不重写更多的行为,我认为你无法实现你想要做的事情。
如果调试到提交操作,您将在Ext.form.Action.Submit
中看到以下内容:
Ext.Ajax.request(Ext.apply(this.createCallback(o), {
form:this.form.el.dom,
url:this.getUrl(isGet),
method: method,
headers: o.headers,
params:!isGet ? this.getParams() : null,
isUpload: this.form.fileUpload
}));
注意,它传递了实际的表单DOM元素(即this.form.el.dom
),它将包含您的字段的实际值,而不是您的计算值。
如果继续调试,您将看到在对Ext.Ajax.request
的调用中,form
参数通过Ext.lib.Ajax.serializeForm(form)
被序列化。结果序列化值作为data
参数传递给Ext.lib.Ajax.request
。该值是实际发送到服务器的值。
相关文章:
- 表单中的数据不会传递给提交函数-使用Angular
- javascript表单提交函数没有't提交
- Jquery提交函数未验证
- JQuery:重用提交函数
- j查询提交函数未触发
- 提交函数无法正确加载
- 当我调用其他提交函数时,$anchorScroll正在进行第二次单击
- 非常基本的PHP和Javascript - 提交/函数不起作用
- 将变量传递给 JQuery 提交函数
- 表单只检查提交函数的第一个值
- 如何将ajax提交函数添加到表单中
- 这个jQuery提交函数出了什么问题
- Javascript表单验证提交函数
- 如何添加提交函数到js的Onclick函数
- 在表单提交函数中调用jQuery AJAX
- 按条件提交函数中的表单
- JQuery提交函数不启动
- 如何在代码编写器中调用提交函数
- 为动态填充的jquery .submit添加额外的提交函数
- 从父窗口表单向父窗口和iframe提交函数