#如圖:
這是一個表格,裡邊有select,現在取得到了一個關於所有下拉選單的值的字串。
想把它們切成單獨的資料存進數組,目前沒有思路,求各位老哥給個思路= =
**
**
取得到的字串是:「年終匯算2005年核定徵收預繳-月度2016年請選擇查帳徵收預繳-季度2008年第四季核定徵收」。
也就是說,所有的select選擇的值都連在一起了,我沒有切開的思路了。
最後想弄成
[{type:"年终汇算",time1:"2005年",time2:"",fangs:"核定征收"},{type:"预缴-月度",time1:"2016年",time2:"2月",fangs:"查账征收"},{type:"预缴-季度",time1:"2008年",time2:"第四季度",fangs:"查账征收"}]
就是最後想存成這種樣子。
**
**
這其中選項,如果使用者沒選,就會顯示“請選擇”,請問如何才能判斷不讓這些值裡出現“請選擇”呢? (也就是說,不能不選就提交,要每個選項都選了,才能提交儲存資料)。
PS:1.我的年度和月度季度的選項不一樣的,上邊是二級聯動,下邊月度季度是三級聯動
2.我這個select是在table的trtd裡寫的,而這些,都是有個"添加"按鈕動態生成的。
不好意思剛才忘記說這兩點了,補充一波-.-
#
1、非常不建議用切分的方式來做,應該想辦法優化 “獲取已選擇” 的項目,使得這些字段天然就是帶結構的。
用切分的方法來做的話,將來維護成本也很高的。
2、在表單提交代碼裡,依序取得每個選項的值,進行合法性判斷。實際上,這也是通用的做法。
下拉選擇與取值思路
以下為我的思路
每個行實例都具有一個
value
對象,如:this.value = {}
;行內的
select
使用標準的數字值,用以比對數組下標,確保取值的準確;每個
select
的change
事件都會修改一個對應的值,如:第一個select.type
選取時,在聯動程式碼之前加上this.value.type = $type[0]. value
—— 自行代入對應的變數;使用隱藏域來管理輸出,如:
;
你可以使用任意的資料格式,個人建議盡量使用數字,如:
最後的
select.fangs
選擇時會產生可用數據,以供表單使用,如:關於驗證
擴充一個 驗證方法,如:
AppRow.prototype.validate()
,該方法根據this.value
的內容監測表單的合法性,並傳回一個布林值,如:首先是否為空對象,是,則說明本行第一個
select
為請選擇
,返回false
;如果選擇了
.type - 0 - 年度匯算
(第一個select
),則取得AppRow.typeChose[this.value.type]
物件;物件不存在,說明可能是越界,如根本不存在
AppRow.typeChose[4]
, 回傳false
;根據所選
AppRow.typeChose[this.value.type].types
得出typeSubLen
目前類型對應的後面表單的數量,即當前類型應該有幾個相關的子級;
;如果
(this.value.length - 1) 說明長度不足,缺少參數,又或 !this.value.time1不存在,回傳
falsethis.value.time1
存在,值=== -1
或!AppRow.typeChose[0].types[this.value.time1]
,回傳false
;存在,值
=== -1
或!AppRow.typeChose[0].types[0].zType_time1[this.value.time1]
,回傳,回傳
;this.value.fangs === -1
條件都滿足,回傳,回傳
false;