www.gusucode.com > iWebshop开源PHP商城系统 v2.8源码程序 > iwebshop/lib/web/js/source/form/form.js
/** *@author webning */ function Form(form) { /** * @brief 初始化表单项值 * @param obj Object key:表单项的name; value:表单项的值 */ this.init = function(obj) { for(var item in obj) { this.setValue(item,obj[item]); } } /** * @brief 获取表单项全部数据对象 * @return Object key:表单项的name; value:表单项的值 */ this.getItems = function() { var obj=new Object(); var elements; if(form == undefined) elements = document.forms[0].elements; else elements=document.forms[form].elements; var len = elements.length; for(var i=0;i<len;i++) { if(obj[elements[i].name] == undefined) obj[elements[i].name]=this.getValue(elements[i].name); } return obj; } /** * @brief 获取表单项全部数据字符串 * @return String 查询字符串 */ this.formatRequest = function() { var elements = this.getItems(); var tem=''; for(i in elements) { if(i!='')tem+='&'+i+'='+elements[i]; } return tem.substr(1); } /** * @brief 设置某一项表单项的值 * @param String name 表单项name * @param String value 表单项的value * @return String */ this.setValue=function(name,value) { var e; if(form == undefined) { e = document.forms[0].elements[name]; } else { e = document.forms[form].elements[name]; } if(e==undefined) return; switch(e.type) { case 'text': case 'hidden': case 'textarea':e.value=value;break; case 'radio': case 'checkbox': { var len = e.length; if(len > 1) { var _value = (';'+value+';'); for(var i = 0; i < len; i++) { if(e[i]!=undefined) { if(value == e[i].value || _value.indexOf(';'+e[i].value+';') != -1) { e[i].checked = true; } else { e[i].checked = false; } } } } else { if(e.value == value) { e.checked = true; } else { e.checked = false; } } break; } case 'select-one': this.setSelected(e,value);break; case 'select-multiple': { var len=e.length; if (len>0) { var _value = (';'+value+';'); for(var j=0;j<len;j++) { if(e[j]!=undefined) { if(value==e[j].value || _value.indexOf(";"+e[j].value+";")!=-1 || value.indexOf(";"+e[j].innerHTML+";")!=-1){e[j].selected=true;} } } } break; } default: { var len=e.length; if (len>0) { var _value = (';'+value+';'); for(var j=0;j<len;j++) { if(e[j]!=undefined) { if(value==e[j].value || _value.indexOf(";"+e[j].value+";")!=-1)e[j].checked=true; } } } break; } } } /** * @brief 获取表单某一项的值 * @param String name 表单项的name * @return String 表单项的值 */ this.getValue = function(name) { var e; if(form == undefined) { e = document.forms[0].elements[name]; } else { e = document.forms[form].elements[name]; } if(e==undefined) return null; switch(e.type) { case 'text': case 'hidden': case 'textarea':return e.value;break; case 'radio': case 'checkbox': { if(e.checked) { return e.value; } break; } case undefined: { var len=e.length; var tmp = ''; if (len>0) { for(var j=0;j<len;j++) { if(e[j]!=undefined) { if(e[j].checked) { if(e[j].value!='') tmp += e[j].value+';'; else tmp += e[j].innerText+';'; } } } } if(tmp.length>0) tmp = tmp.substring(0,(tmp.length-1)); if(tmp!='')return tmp; else return null; break; } case 'select-one': return e.value;break; case 'select-multiple': { var len=e.length; if (len>0) { var tmp = ''; for(var j=0;j<len;j++) { if(e[j]!=undefined) { if(e[j].checked) { if(e[j].value!='') tem += e[j].value+';'; else tem += e[j].innerText+';'; } } } } if(tmp.length>0) tmp = tmp.substring(0,(tmp.length-1)); if(tmp!='')return tmp; else return null; break; } } } /** * @brief 设置select下拉框的选中状态 */ this.setSelected = function(obj,value) { objSelect=obj; for(var i=0;i<objSelect.options.length;i++) { if(objSelect.options[i].value == value || objSelect.options[i].text == value) { objSelect.options[i].selected = true; break; } } } }