Changeset 115100 in spip-zone


Ignore:
Timestamp:
Apr 30, 2019, 3:21:21 PM (3 weeks ago)
Author:
maieul@…
Message:

Les sélecteurs jquery pour basculer les required en cas d'afficher_si
n'allaient pas:

  • pas génériques
  • ne testaient pas la présence de required, donc pas logique
  • hypers lourds et pouvaient provoquer des lagues importants en cas

d'afficher_si multiple

On modifie donc ces selecteurs.

  • Si le test d'affichage de la saisie n'est pas validé, on cherche tous les

élèments inclus dans la saisie qui ont attribut required, et on modifie
cet attribut required en data-afficher_si_required

  • Si le test d'affichage de la saisie est validé, on cherche tous les

élèments inclus dans la saisie qui ont attribut data-afficher-sirequired, et on modifie
cet attribut en required

Bref, un bete drapeaux de switch.

Merci Rasta d'avoir signalé les problèmes :)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/saisies/trunk/inc/saisies_afficher_si.php

    r115023 r115100  
    129129                                                         .      "\t\t$(form).find(\"$sel\")."._SAISIES_AFFICHER_SI_JS_SHOW.";\n";
    130130                        if (html5_permis()) {
    131                         $pour_html_5 =  "$sel.obligatoire > input,"// si le afficher_si porte directement sur le input
    132                                                         ."$sel .obligatoire input:not('.checkbox'),"// si le afficher_si porte sur le fieldset, tous les input dedans sont concernés, quelque soit leur profondeur (ce qui inclut notamment les cas complexe, type radio ou date). Une exception toutefois : les checbbox multiple, qui ne peuvent avoir de required
    133                                                         ."$sel.obligatoire > textarea,"// si le afficher_si porte directement sur le textearea
    134                                                         ."$sel.obligatoire > .edition textarea,"// si le afficher_si porte directement sur le textearea encapsulé dans un markitup
    135                                                         ."$sel .obligatoire > textarea,"// si le afficher_si porte sur le fiedset
    136                                                         ."$sel.obligatoire > select,"//si le afficher_si porte directement sur le select
    137                                                         ."$sel .obligatoire > select,"//si le afficher_si porte sur le fieldset
    138                                                         ."$sel.obligatoire input:radio";//si le afficher_si porte sur un radio
    139                         $code .=        "\t\t$(form).find("
    140                                                         .'"'."$pour_html_5\")".
    141                                                         ".attr(\"required\",true);\n";
     131                        $code .=        "\t\t$(form).find(\"$sel [data-afficher-si-required]\").attr(\"required\",true).attr(\"data-afficher-si-required\",null);\n";
    142132                        }
    143133                        $code .=        "\t}\n";
    144134                        $code .= "\telse {\n";
    145135                        if (html5_permis()) {
    146                                 $code .= "\t\t$(form).find(\n\t\t\t"
    147                                                         .'"'."$pour_html_5\")\n"
    148                                                         ."\t\t.attr(".'"required"'.",false);\n";
     136                                $code .= "\t\t$(form).find(\"$sel [required]\").attr(\"required\",false).attr(\"data-afficher-si-required\",true);\n";
    149137                        }
    150138                        $code .= "\t\tif (chargement==true) {\n"
Note: See TracChangeset for help on using the changeset viewer.