jquery validate, necessità di validare almeno un elemento select su due

MarcoGrazia

Utente Attivo
15 Dic 2009
813
18
18
60
Udine
www.stilisticamente.com
Ciao, non so se il titolo è chiaro, comunque il mio problema è questo:
Ho un form che mi deve lanciare una statistica, l'utente può scegliere tra lanciare una statistica trimestrale o una mensile.
Il form è fatto da:
una select che identifica gli anni, predefinito è l'anno corrente, quindi non la verifico.
Due select: una che ha per opzioni i tre trimestri, e l'altra con i mesi.
Queste ultime due select sono mutuamente selezionabili, cioè o scegli una o scegli l'altra.

Sto validando il form con il plugin di jquery validate(), ma non riesco a gestire la validazione; in pratica seguendo alcuni esempi trovati anche in questo forum, non sono venuto a capo di nulla.

Un poco di codice, tanto per capirci
biggrin.gif

HTML - Le tre select
HTML:
<!-- Anno -->
<div class="col-sm-4">
   <select class="form-control" name="annualita">
       <option value="2019">2019</option>
   </select>
</div>

<!-- Trimestre -->
<div class="col-sm-4">
   <select class="form-control" id="trimestre" name="trimestre">
       <option value="default">Trimestri...</option>
       <option value="1">Primo trimestre</option>
       <option value="2">Secondo trimestre</option>
       <option value="3">Terzo trimestre</option>
   </select>
</div>

<!-- Mensile -->
<div class="col-sm-4">
   <select class="form-control" id="mensilita" name="mensilita">
       <option value="default">Mensilità...</option>
       <option value="1">1. gennaio</option>
       <option value="2">2. febbraio</option>
       <option value="3">3. marzo</option>
       <option value="4">4. aprile</option>
       <option value="5">5. maggio</option>
       <option value="6">6. giugno</option>
       <option value="7">7. luglio</option>
       <option value="8">8. agosto</option>
       <option value="9">9. settembre</option>
       <option value="10">10. ottobre</option>
       <option value="11">11. novembre</option>
       <option value="12">12. dicembre</option>
   </select>
</div>
Il poco di Javascript creato fino a qui.
Codice:
<script type="text/javascript" src="js/jquery.validate.min.js"></script>
<script type="text/javascript">
   "use strict";


   $(function () {


       $('#form-stat').validate({
           rules: {
               trimestre: {
                   required: function() {
                       return $("#mensilita").val() === '';
                   }
               },
               mensilita: {
                   required: function() {
                       return $("#trimestre").val() === '';
                   }
               }
           },
           messages: {
               trimestre: {
                   required: 'Devi scegliere almeno un periodo.'
               },
               mensilita: {
                   required: 'Devi scegliere almeno un periodo.'
               }
           }
       });
   });
</script>
Ho usato l'esempio riportato da questo forum, vedi link sopra, ma non funziona in nessun caso.
In pratica, ora come ora se premo il tasto di invio, il form viene sempre e comunque inviato, mentre se tutti e due i campi riportano il valore "default" non deve essere inviato.
 

MarcoGrazia

Utente Attivo
15 Dic 2009
813
18
18
60
Udine
www.stilisticamente.com
Risolto con una semplice funzione creata ad hoc
biggrin.gif


Codice:
var trimestre = $('#trimestre');
var mensilita = $('#mensilita');
var invio = $('button[name="stampa"]');
                
    $('#trimestre, #mensilita').on('change', function() {
        if ($(this).val() != 'default') {
            switch ($(this).prop('id')) {
                case 'trimestre':
                    mensilita.prop('disabled', true);
                    invio.prop('disabled', false);
                    break;
                case 'mensilita':
                    trimestre.prop('disabled', true);
                    invio.prop('disabled', false);
                    break;
            }
        }
    });
In pratica quando seleziono una select a case, a meno che non selezioni l'opzione di default, disabilito l'altra select e abilito il tasto di invio.
E tolgo pure un plugin ora inutile al progetto, risparmiando byte :D
 
Discussioni simili
Autore Titolo Forum Risposte Data
MarcoGrazia Validazione remota tramite plugin (jquery validate) Snippet Javascript 0
MarcoGrazia jquery validate() controllo checkbox jQuery 2
MarcoGrazia Validazione forum con jquery.validate jQuery 2
F Jquery validate jQuery 1
Z CSS Slideshow senza JS e JQUERY HTML e CSS 2
Z CSS Slideshow senza JS e JQUERY HTML e CSS 2
M Come selezionare e deselezionare radiobutton con jquery jQuery 1
M Come validare textarea con jquery jQuery 0
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
P Funzione jQuery Ajax invio file a php jQuery 1
Cosina Menu fisso copre i titoli quando cliccati nel sommario jQuery Javascript 4
D assegnare risultato di una jquery ad una text Javascript 2
felino [JQuery] Append dopo ultimo ul li del primo livello jQuery 2
A php metodo post jquery non da mai errore jQuery 4
T problema con select dinamica con jquery Javascript 0
P jquery .load jQuery 10
E Div che scompare con scroll jquery Javascript 0
T script jquery non funziona più dopo il passaggio a MVC jQuery 5
B jQuery - hide & show li items jQuery 13
Y jQuery Animation Switch On Off jQuery 0
claudio_lorenzo [Javascript] aiuto su jquery per calcolo altezze dom Javascript 1
O [Javascript] Conflitto Jquery: forse... Javascript 0
M inserire i dati ottenuti da una jquery in una tabella già esistente jQuery 1
D Jquery, conflitto tra loro risolvibile? jQuery 7
M Filtrare risultati con valori checkbox passati con jquery jQuery 2
Tommy03 Variabile PHP dentro a JQuery PHP 3
L Problema jQuery validation AJAX (PHP 7) PHP 6
G Campo HTML input file con jQuery jQuery 0
P Jquery event nel foreach php jQuery 3
M leggere con jquery/ajax in una function javascript record di database sql server Javascript 0
A [Javascript] Ajax, Jquery e PHP Javascript 1
trattorino Mentions Auto Suggesting da jquery a php PHP 2
X Problema con jquery e ajax jQuery 2
G Inserzione script nella pagina html per jquery jQuery 8
Shyson Smoot scrolling jQuery nella pagina jQuery 0
felino [Javascript] [jQuery] Slick Carousel: visualizzare una porzione dell'immagine successiva Javascript 0
L Scelta form con jquery jQuery 1
F [Javascript] Aprire file tramite jquery Javascript 0
R Aiuto Jquery jQuery 1
G [HTML] Jquery e tooltipster's jQuery 5
I Jquery fadeout-fadein html data jQuery 0
trattorino Estrarre Nome Utente jquery div php PHP 9
L jquery e json controllo valori da determinate chiavi - keys jQuery 0
B PHP e JQUERY per scrivere codice html dinamicamente PHP 2
F [Javascript] Jquery radio Javascript 2
otto9due Errore ricorsivo jquery, non capisco da cosa dipenda.. jQuery 1
F [Javascript] Problema funzione jquery con elementi css esterni Javascript 1
P leggere file .csv con javascript/jquery Javascript 11
G [Javascript] jQuery PHP MySql - inserire variabile nel DataBase Javascript 8
G [Javascript] Ricalcolo Totale jQuery Javascript 7

Discussioni simili