Wie im Bild gezeigt:
Dies ist eine Tabelle mit der Auswahl darin. Jetzt haben wir eine Zeichenfolge über die Werte aller Dropdown-Menüs erhalten.
Ich möchte sie in separate Daten zerlegen und in einem Array speichern. Bitte geben Sie mir einige Ideen
Erste Frage:
Die erhaltene Zeichenfolge lautet: „Genehmigter Einzug und Vorauszahlung zum Jahresende 2005 – monatlich 2016, bitte wählen Sie Rechnungseinzug und Vorauszahlung – vierteljährlich, genehmigter Einzug im vierten Quartal 2008“.
Mit anderen Worten, alle von select ausgewählten Werte sind miteinander verbunden, und ich habe keine Ahnung, wie ich sie auseinanderschneiden kann.
Endlich will ich es schaffen
[{type:"年终汇算",time1:"2005年",time2:"",fangs:"核定征收"},{type:"预缴-月度",time1:"2016年",time2:"2月",fangs:"查账征收"},{type:"预缴-季度",time1:"2008年",time2:"第四季度",fangs:"查账征收"}]
Das ist es, was ich am Ende retten möchte. **
Zweite Frage:
Wenn der Benutzer diese Optionen nicht auswählt, wird „Bitte auswählen“ angezeigt. Wie können wir beurteilen, ob „Bitte auswählen“ in diesen Werten vorkommt? (Mit anderen Worten: Sie können die Daten nicht übermitteln, ohne sie auszuwählen. Sie müssen jede Option auswählen, bevor Sie die Speicherdaten übermitteln können.)
PS: 1. Meine Optionen für das jährliche und das monatliche Quartal sind unterschiedlich und die untere Option für das monatliche Quartal ist die Verknüpfung der dritten Ebene. und das sind alle. Es gibt eine Schaltfläche „Hinzufügen“, die dynamisch generiert wird.
Es tut mir leid, dass ich gerade vergessen habe, diese beiden Punkte zu erwähnen, ich füge sie einfach hinzu -.-
1、非常不建议用切分的方式来做,应该想办法优化 “获取已选择” 的项目,使得这些字段天然就是带结构的。
用切分的方法来做的话,将来维护成本也很高的。
2、在表单提交代码里,依次获取每个选项的值,进行合法性判断。实际上,这也是通用的做法。
下拉选择和取值思路
以下为我的思路
每个行实例都具有一个
value
对象,如:this.value = {}
;行内的
select
使用标准的数字值,用以比对数组下标,确保取值的准确;每个
select
的change
事件都会修改一个对应的值,如:第一个select.type
选中时,在联动代码之前添加this.value.type = $type[0].value
—— 自行代入对应的变量;使用隐藏域来管理输出,如:
<input type="hidden" name="name[]" />
;你可以使用任意的数据格式,个人建议尽量使用数字,如:
最后的
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) < 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
;