javascript - Couper des chaînes, aucune idée...
女神的闺蜜爱上我
女神的闺蜜爱上我 2017-06-14 10:53:26
0
2
731

Comme le montre l'image :
Il s'agit d'un tableau contenant une sélection. Nous avons maintenant obtenu une chaîne sur les valeurs de tous les menus déroulants.
Je souhaite les découper en données séparées et les stocker dans un tableau. Je n'en ai aucune idée pour le moment. Veuillez me donner quelques idées = =

.

**

Première question :

**
La chaîne obtenue est : "Règlement final de fin d'année 2005 encaissement et paiement anticipé approuvés - mensuel 2016, veuillez sélectionner audit encaissement et prépaiement - encaissement approuvé trimestriel du quatrième trimestre 2008".
En d'autres termes, toutes les valeurs sélectionnées par select sont connectées entre elles, et je n'ai aucune idée de​​les séparer.
Enfin, je veux y arriver

[{type:"年终汇算",time1:"2005年",time2:"",fangs:"核定征收"},{type:"预缴-月度",time1:"2016年",time2:"2月",fangs:"查账征收"},{type:"预缴-季度",time1:"2008年",time2:"第四季度",fangs:"查账征收"}]

C'est ce que je veux sauver au final.

**

Deuxième question :

**

Pour ces options, si l'utilisateur ne choisit pas, « Veuillez sélectionner » s'affichera. Comment pouvons-nous juger si « Veuillez sélectionner » apparaît dans ces valeurs ? (En d’autres termes, vous ne pouvez pas soumettre sans la sélectionner. Vous devez sélectionner toutes les options avant de pouvoir soumettre les données de stockage).

PS : 1. Mes options trimestrielles annuelles et mensuelles sont différentes. Celle du haut est le lien de deuxième niveau, et celle du bas pour le trimestre mensuel est le lien de troisième niveau 2. Ma sélection est écrite dans le trtd du tableau, et ce sont tous. Il y a un bouton "Ajouter" généré dynamiquement.

Je suis désolé d'avoir oublié de mentionner ces deux points tout à l'heure, je vais juste les ajouter -.-

女神的闺蜜爱上我
女神的闺蜜爱上我

répondre à tous(2)
淡淡烟草味

1. Il est fortement déconseillé d'utiliser la segmentation. Vous devez trouver un moyen d'optimiser les éléments "get selected" pour que ces champs soient naturellement structurés.

Si vous utilisez la méthode de segmentation, le coût de maintenance sera très élevé à l'avenir.

Si vous insistez pour utiliser la méthode habituelle, vous devez d'abord utiliser "-" pour couper la ficelle.
Pour chaque chaîne, faites correspondre "calcul de fin d'année", "mensuel", "trimestriel", etc., obtenez le type, puis continuez à faire correspondre l'heure, puis faites correspondre les crocs

2. Dans le code de soumission du formulaire, obtenez tour à tour la valeur de chaque option et jugez de la légalité. En fait, c’est aussi une approche courante.

typecho

Sélection déroulante et idées de valeur

Voici mes pensées

  • Chaque instance de ligne a un value对象,如:this.value = {};

  • Le select dans la ligne utilise des valeurs numériques standard pour comparer les indices du tableau afin de garantir l'exactitude de la valeur ;

  • Chaque événement selectchange 事件都会修改一个对应的值,如:第一个 select.type 选中时,在联动代码之前添加 this.value.type = $type[0].value change modifiera une valeur correspondante. Par exemple : lorsque le premier select.type est sélectionné, ajoutez this avant la valeur du code de liaison. type = $type[0].value - Remplacez vous-même la variable correspondante

  •  ;
  • Utilisez des champs masqués pour gérer la sortie, tels que : <input type="hidden" name="name[]" /> ;

  • Vous pouvez utiliser n'importe quel format de données. Personnellement, il est recommandé d'utiliser autant que possible des nombres, tels que :
// 数组
this.value = [1,1,1,0]; // 预缴-月度|2016年|1月|查账征收

// 对象
this.value = {
    type: 2, // 预缴-季度
    years: 1, // 2016年
    time: 3, // 第四季度
    fangs:1 // 核定征收
};

Le dernier

générera des données disponibles à utiliser dans le formulaire lorsqu'il est sélectionné, telles que :

$fangs.on('change.app', $.proxy(function(e){
    // 添加值
    this.value.fangs = $fangs[0].value;
    
    // 生成表单值
    this.$output.val(JSON.stringify(this.value));
}, this));
select.fangsÀ propos de la vérification

Étendez une

méthode de validation

, telle que : Le contenu surveille la légalité du formulaire et renvoie une valeur booléenne, telle que : AppRow.prototype.validate(),该方法根据 this.value

    Est-ce d'abord un objet vide ? Si oui, cela signifie que le premier
  • de cette ligne est Veuillez sélectionner et renvoyer false ;

    select请选择,返回 falseSi .type - 0 - Calcul annuel (le premier

    ) est sélectionné, récupérez l'objet AppRow.typeChose[this.value.type]
  •  ;

    .type - 0 - 年度汇算(第一个 select),则获取 AppRow.typeChose[this.value.type]L'objet n'existe pas, ce qui indique qu'il est peut-être hors limites, s'il n'existe pas du tout

  • AppRow.typeChose[4], 返回 falseSelon le nombre de formulaires suivants correspondant au

    type actuel sélectionné, c'est-à-dire que le type actuel doit avoir plusieurs enfants liés
  •  ;

    AppRow.typeChose[this.value.type].types 得出 typeSubLensi

  • (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.fangsthis.value.fangs === -1,返回 falseSi toutes les conditions sont remplies, revenez

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!