Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    jQuery UI Datepicker: disabilitare giorni

    salve!
    mi ritrovo a fare una cosa abbastanza complicata e nn sono riuscito neanche a capire se è possibile farla.
    in pratica ho un datepicker nel quale devo disattivare giorni interi se nn ci stanno nella query che eseguo sul db.
    per gioni però nn intendo il numero, ma poprio il giorno (lunedì, martedì,....).
    quindi, eseguo la query e se ad esempio lunedì nn c'è tutta la colonna del lunedì è disattivata.
    è possibile fare una cosa del genere???

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,695
    Ciao,
    non ho mai usato datepitcker ma è bastato il primo risultato su google.. non era così complicato..
    Devi definire la funzione beforeShowDay con una cosa tipo:
    codice:
    $("#datepicker").datepicker({
       beforeShowDay: function(date){ 
         var d = date.getDay(); 
         return [d!=1 && d!=2,""];
    // 1=lun, 2=mar, ecc.. elimina o aggiungi con && i giorni che vuoi disabilitare
    // oppure con || così [d==1 || d==2,""] per definire i soli giorni abilitati
       }
    });
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    si ma così facendo tu gli dici di disabilitare il giorno 1,4,X....io invece gli devo dire di oscurare tutta la colonna Lunedi, Martedi, ecc....

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,695
    tu hai provato?
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    no perchè nel database io ho i giorni salvati (Lunedì, martedì,....) non il numero del giorno del mese.
    quindi nn saprei come fargli riconoscere i dati.
    è questo il mio problema.
    in giro ho trovato (forse giustamente) esempi come il tuo, nn prendendo in considerazione il nome del giorno.

    cioè....
    ti faccio un esempio.
    supponiamo che io abbia una promozione il lunedi e il venerdì.
    quando eseguo la query sul ristorante prendo il nome di quei due giorni, li passo al datepicker dicendogli che solo quei due giorni devono essere attivati.
    nn se sono mi sono spiegato meglio.

  6. #6
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,695
    Ti sei spiegato e avevo capito abbastanza bene.
    La funzione getDay non restituisce il giorno del mese, bensì il giorno della settimana, espresso con un numero che va da 0 a 6 partendo dalla domenica.
    Se dal db recuperi il nome del giorno dovrai convertirlo in qualche modo in un numero per fare i dovuti confronti con l'argomento date della funzione beforeShowDay.. basta un po' di fantasia.. bisogna comunque capire di che tipo sono i dati che ottieni dal db. Una stringa? un array?

    Mettiamo che ottieni un array dei giorni da escludere:
    codice:
    var arr_giorni_da_escludere = ["Lunedì","Mercoledì","Domenica"];
    var arr_giorni_settimana = ["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"];
    $("#datepicker").datepicker({
       beforeShowDay: function(date){
         return [$.inArray(arr_giorni_settimana[date.getDay()],arr_giorni_da_escludere) == -1,""];
       }
    });
    Qui ho usato inArray per determinare se il giorno, restituito dall'oggetto date, sia o no presente tra i giorni da escludere.. ma ovviamente puoi fare in tanti altri modi.

    PS: non ho testato lo script
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  7. #7
    ciao!!
    questo codice che mi hai dato funziona perfettamente.
    manca solo la parte php/mysql.
    in apertura di pagina faccio la query e trovo i giorni da escludere.
    dopo di che passo l'array a JS.
    il problema è l'interazione tra i due.
    pensavo ad ajax, mase avete altri suggerimenti....

  8. #8
    ho provato così:
    codice:
      var arr_giorni_da_escludere = new Array();
        $.ajax({
            type: "GET",
            url: "cerca_giorni_disp.php",
            //data: "table=" + table + "&where=" + where + "&id=" + id,
            success: function(response){
                arr_giorni_da_escludere = response;
            }
        });
        alert(arr_giorni_da_escludere)
    e poi passo arr_giorni_da_escludere come hai fatto te.
    il problema è che il valore di arr_giorni_da_escludere nn viene visto al di fuori della funzione success.
    però viene valorizzato in maniera giusta in quanto se l'alert lo sposto dentro esce con i rislutati giusti.

  9. #9
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,695
    Il success è un evento asincrono, per questo motivo non hai un risultato attendibile con un alert del genere al di fuori di quella funzione.

    In questo caso il datepicker andrà "inizializzato" e fatto funzionare solo dopo il responso ajax. Puoi mettere tutto dentro il success o dentro una funzione da richiamare poi dal success. Puoi fare comunque in vari modi ma devi vedere tu cosa vuoi ottenere di preciso.

    Se all'apertura della pagina devi leggere direttamente dal db puoi farlo senza ajax in modo da avere comunque la risposta del db da subito prima che sia mostrata la pagina. Se la tua pagina è in php puoi popolare la tua variabile javascript al volo con una cosa tipo:
    codice:
    var arr_giorni_da_escludere = ['<?php echo UNA STRINGA DEI GIORNI; ?>'];
    Ovviamente con php in questo caso devi fare un echo della stringa che rappresenta la serie dei giorni. Quindi una stringa tipo ' "Lunedì","Mercoledì","Domenica" '

    Se poi hai problemi riguardo la parte php e mysql credo ti debba rivolgere al relativo forum, altrimenti andremmo fuori dall'ambito javascript.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  10. #10
    no no nn è un problema di PHP.
    io i dati mi arrivano così:
    codice:
    "Martedi","Giovedi","Venerdi","Sabato","Domenica",
    poi faccio così:
    codice:
    <script type="text/javascript">
        var arrGiorniEscludere = ['<?php echo $dayEscl; ?>'];
        var arrGiorniSettimana = ["Domenica","Lunedi","Martedi","Mercoledi","Giovedi","Venerdi","Sabato"];
        $('#datepicker_wizard').datepicker({ // DATEPICKER
            firstDay: 1,
            dateFormat: 'dd/mm/yy',
            beforeShowDay: function(date){
                return [$.inArray(arrGiorniSettimana[date.getDay()],arrGiorniEscludere) == -1,""];
            },
            onSelect: function(date) {
                $('#txt_date').val(date);
            }
        });
    </script>
    solo che il picker rimane totalmente vuoto.
    nn so se possa essere un problema di formato dei dati.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.