yui3版本的表单序列化。我发现网的yui的教程不多。最流行的不一定是最好的,就我个人来说,偏爱yui甚于jquery。
用法:
一、serializeForm('#formid'),返回a=55&b=option1&b=option2
二、serializeForm('#formid',true),返回对象{afile:'55',bfield:['option1','option2]}
var serializeForm = (function(){
var namevalues = {};
function add(name,value){
if(namevalues[name]){
if(Y.Lang.isArray(namevalues[name])){
namevalues[name].push(value);
}else{
namevalues[name] = [namevalues[name]];
namevalues[name].push(value);
}
}else{
namevalues[name] = value;
}
}
return function(form,obj){
namevalues = {};
var formNode;
if(form){
if(Y.Lang.isString(form)){
formNode = Y.one(form);
}else{
formNode = form;
}
}
var items = formNode.all('input[name][type=text],input[name][type=hidden],input[name][type=radio]:checked,input[name][type=check]:checked,select[name],textarea[name]');
items.each(function(nel){
if(nel.get('tagName').toUpperCase() == "SELECT"){
nel.get('options').each(function(op){
if(op.get('selected')){
add(nel.get('name'),op.get('value'));
}
});
}else{
add(nel.get('name'),nel.get('value'));
}
});
if(obj){
return namevalues;
}else{
Y.QueryString.stringify(namevalues);
}
};
})();