亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

字符串切割,沒思路..

字符串切割,沒思路..

12345678_0001 2018-11-29 22:17:12
如圖:這是一個表格,里邊有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 回答

?
湖上湖

TA貢獻2003條經驗 獲得超2個贊

下拉選擇和取值思路

以下為我的思路

  • 每個實例都具有一個value對象,如:this.value = {};

  • 行內的 select 使用標準的數字值,用以比對數組下標,確保取值的準確;

  • 每個 select 的 change 事件都會修改一個對應的值,如:第一個 select.type 選中時,在聯動代碼之前添加 this.value.type = $type[0].value —— 自行代入對應的變量;

  • 使用隱藏域來管理輸出,如:<input type="hidden" name="name[]" />;

你可以使用任意的數據格式,個人建議盡量使用數字,如:

// 數組

this.value = [1,1,1,0]; // 預繳-月度|2016年|1月|查賬征收


// 對象

this.value = {

    type: 2, // 預繳-季度

    years: 1, // 2016年

    time: 3, // 第四季度

    fangs:1 // 核定征收

};

最后的 select.fangs 選擇時會生成可用數據,以供表單使用,如:

$fangs.on('change.app', $.proxy(function(e){

    // 添加值

    this.value.fangs = $fangs[0].value;

    

    // 生成表單值

    this.$output.val(JSON.stringify(this.value));

}, this));

關于驗證

擴展一個 驗證方法,如: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) < typeSubLen 說明長度不足,缺少參數,又或 !this.value.time1 不存在,返回 false;

  • this.value.time1 存在,值 === -1 或 !AppRow.typeChose[0].types[this.value.time1],返回 false;

  • this.value.time2 存在,值 === -1 或 !AppRow.typeChose[0].types[0].zType_time1[this.value.time1],返回 false;

  • !this.value.fangs 或 this.value.fangs === -1,返回 false

  • 條件都滿足,返回 true;


查看完整回答
反對 回復 2018-12-21
  • 1 回答
  • 0 關注
  • 511 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號