Thursday, January 8, 2009
{SOLVED] :how do you override Ext.lib.Ajax?
override : function(origclass, overrides){
if(overrides){
var p = origclass.prototype;
for(var method in overrides){
p[method] = overrides[method];
}
}
},
p has no properties
[Break on this error] p[method] = overrides[method];
Thanks.
all i want is how to achieve my goal without hacking actual file..Thanks in advance.:)
All disabled fields will be moved to hidden field during production...time.:)
http://farm4.static.flickr.com/3069/2505829047_a703b69836_b.jpg
var foo = new Ext.lib.Ajax();
foo.doWhatever();
Do you?
So it's not a class is it?
So it has no prototype.
It just has properties which you can set as you wish.
Ext.lib.Ajax = {
....
serializeForm : function(form) {
if(typeof form == 'string') {
form = (document.getElementById(form) document.forms[form]);
}
var el, name, val, disabled, data = '', hasSubmit = false;
for (var i = 0; i < form.elements.length; i++) {
el = form.elements[i];
disabled = form.elements[i].disabled;
name = form.elements[i].name;
val = form.elements[i].value;
if (!disabled && name){
switch (el.type)
{
case 'select-one':
case 'select-multiple':
for (var j = 0; j < el.options.length; j++) {
if (el.options[j].selected) {
if (Ext.isIE) {
data += encodeURIComponent(name) + '=' + encodeURIComponent(el.options[j].attributes['value'].specified ? el.options[j].value : el.options[j].text) + '&';
}
else {
data += encodeURIComponent(name) + '=' + encodeURIComponent(el.options[j].hasAttribute('value') ? el.options[j].value : el.options[j].text) + '&';
}
}
}
break;
case 'radio':
case 'checkbox':
if (el.checked) {
data += encodeURIComponent(name) + '=' + encodeURIComponent(val) + '&';
}
break;
case 'file':
case undefined:
case 'reset':
case 'button':
break;
case 'submit':
if(hasSubmit == false) {
data += encodeURIComponent(name) + '=' + encodeURIComponent(val) + '&';
hasSubmit = true;
}
break;
default:
data += encodeURIComponent(name) + '=' + encodeURIComponent(val) + '&';
break;
}
}
}
data = data.substr(0, data.length - 1);
return data;
},
This is what i changed...thinking i can override
Ext.override(Ext.lib.Ajax, {
serializeForm : function(form) {
if(typeof form == 'string') {
form = (document.getElementById(form) document.forms[form]);
}
var el, name, val, disabled, disabledPost, data = '', hasSubmit = false;
for (var i = 0; i < form.elements.length; i++) {
el = form.elements[i];
disabled = form.elements[i].disabled;
disabledPost = form.elements[i].disabledPost;
name = form.elements[i].name;
val = form.elements[i].value;
if ( !(disabled ^ disabledPost) && name){
switch (el.type)
{
case 'select-one':
case 'select-multiple':
for (var j = 0; j < el.options.length; j++) {
if (el.options[j].selected) {
if (Ext.isIE) {
data += encodeURIComponent(name) + '=' + encodeURIComponent(el.options[j].attributes['value'].specified ? el.options[j].value : el.options[j].text) + '&';
}
else {
data += encodeURIComponent(name) + '=' + encodeURIComponent(el.options[j].hasAttribute('value') ? el.options[j].value : el.options[j].text) + '&';
}
}
}
break;
case 'radio':
case 'checkbox':
if (el.checked) {
data += encodeURIComponent(name) + '=' + encodeURIComponent(val) + '&';
}
break;
case 'file':
case undefined:
case 'reset':
case 'button':
break;
case 'submit':
if(hasSubmit == false) {
data += encodeURIComponent(name) + '=' + encodeURIComponent(val) + '&';
hasSubmit = true;
}
break;
default:
data += encodeURIComponent(name) + '=' + encodeURIComponent(val) + '&';
break;
}
}
}
data = data.substr(0, data.length - 1);
return data;
}
});
Ext.lib.Ajax.serializeForm = function(form) { .... }
That works!. Now when i do not want i just remove the override..for the disabled...atleast this helps during debugging....
See ..i did n't know all the syntax to change things....
Thanks again hendrix...:)
I thought i can override Ext.lib.Ajax to achieve that...
I don't want to change the original file...that will be a mess if start to go one the road...:D
Lets talk in this thread so other newbie like me able to use it...
#If you have any other info about this subject , Please add it free.# |