如題,以下**展示如何講介面的表單域的值自動歸集到指定物件,以及如何用指定物件自動填充表單域,思路很簡單,但用起來挺方便的,**結構不算好,但挺穩定的,所以也懶得去重構了。
簡單的說下原理:
1 收集表單資料,通過指定容器物件,對容器進行遞迴遍歷,當發現是表單域時,判斷物件是否有表單網域名稱稱相同的屬性,如果有則將表單域的值設定到物件中。
2 同理重置表單和自動填充表單對1做反向操作就行,只是對下拉、radio等會自動定位判斷。
問題:2 當介面的表單值對應到多個物件時要自動填充怎麼辦,同樣,呼叫多次fillform(rec:object,container:object)就行。
支援flex3和flex4版本。
package ***.servicepublic static function getinstance():formparser
var count:number=container.numchildren;
for(var i:number=0;ielse if(ischeckbox(obj))
else if(isradiobutton(obj))
if(obj.selected)
}else if(iscombobox(obj))
else if(isdropdownlist(obj))
else if(isradiobuttongroup(obj))
else if(obj is container||obj is ivisualelementcontainer)}}
/***
* 為物件增加指定屬性和屬性值
*/bo[obj["id"]]=propertyvalue;
}/***
* 重置form中的項
*/public function resetform(container:object):void
else if(ischeckbox(obj))
else if(isradiobutton(obj))
if(obj.groupname==undefined||obj.groupname=="")
}else if(iscombobox(obj))
else if(isradiobuttongroup(obj))
else if(isdropdownlist(obj))
else if(obj is container|| obj is ivisualelementcontainer)}}
/***
* 根據物件填充表單
*/public function fillform(rec:object,container:object):void
var count:number=container.numchildren;
for(var i:number=0;i}
var value:string=getvalue(rec,name);
if(istextfield(obj))
else if(ischeckbox(obj))
}else if(isradiobutton(obj))
else}}
else if(iscombobox(obj)||isdropdownlist(obj))
else
}else if(obj is container||obj is ivisualelementcontainer)}}
private function getvalue(rec:object,name:string):string
private function getobjectname(rec:object,obj:object):string
if(rec.hasownproperty(name))
return null;
} private function isformcontrol(obj:object):boolean
if(ischeckbox(obj)||isradiobutton(obj)||iscombobox(obj))
return false;
} /**
* source combox下拉列表資料來源
* itemdata 下拉資料來源中某項的data屬性值
* return itemdata對應的item
*/public function getitembydata(source:object,itemdata:object):object
for each(var obj:object in source)
}return null;
} private function isdropdownlist(obj:object):boolean
private function isradiobuttongroup(obj:object):boolean
private function isradiobutton(obj:object):boolean
private function iscombobox(obj:object):boolean
private function ischeckbox(obj:object):boolean
private function istextfield(obj:object):boolean
return false;
} }}
取消表單自動填充功能
使用者輸入表單內容進行登入,當其中包含密碼的時候,某些瀏覽器比如chrome會提示記住密碼。讓後當你下一次開啟網頁,然後瀏覽器會自動幫你填充表單。可是有時候我們不希望這樣做。如何去掉呢?網上有很多方案 type text name foo autocomplete off type text sty...
表單密碼自動填充hack
寫前端的,最討厭的事有幾個,其中乙個就是使用者 自己輸入的密碼被瀏覽器記住之後,每次開啟頁面都會自動填充。甚至不分青紅皂白,每個頁面只要有password型別的輸入框,就會自動填充。尤其是chrome。不僅煩人,有時候還會影響樣式,比如chrome下,輸入框帶有背景icon,但是自動填充會變成黃色背...
表單密碼自動填充hack
寫前端的,最討厭的事有幾個,其中乙個就是使用者 自己輸入的密碼被瀏覽器記住之後,每次開啟頁面都會自動填充。甚至不分青紅皂白,每個頁面只要有password型別的輸入框,就會自動填充。尤其是chrome。不僅煩人,有時候還會影響樣式,比如chrome下,輸入框帶有背景icon,但是自動填充會變成黃色背...