2017-06-08 4 views
6

Im utilisant xdsoft datetimepicker afin que les utilisateurs peuvent sélectionner une date limite. Je voudrais montrer une alerte s'ils choisissent l'un des 3 prochains jours.Afficher l'alerte si l'utilisateur sélectionne une date dans les 3 prochains jours

Initialement, j'avais mis un minDate donc ces jours n'étaient pas sélectionnables mais je préférerais que ces jours puissent être sélectionnés et une boîte d'alerte est montrée à la place.

Je ne suis pas sûr si là si une option pour cela existe déjà, je ne pouvais pas trouver un dans la documentation.

Voilà comment je fais it-

html

<h3>Deadline:</h3> 
<input type="text" id="datetimepicker"/> 

jquery

$('#datetimepicker').datetimepicker({ 
    timepicker:false, 
    format:'d/m/Y', 
    formatDate:'Y/m/d', 
    minDate:'+1970/01/04', 
}); 

J'ai également mis en place a jsfiddle

Merci les gars, si vous pouviez me diriger dans le bon chemin, il serait très apprécié

+2

Il y a une option appelée 'onChangeDateTime' disponible, mais il semble que le plugin est peu bogué .. Il continue à appeler l'alerte sur le changement .. Je ne sais pas comment vous pouvez y parvenir .. et ** [voici le problème] (https://github.com/xdan/datetimepicker/issues/232) ** signalé lequel ** n'a pas été corrigé **. Je suggère de choisir un autre plugin qui est plus favorable. –

+1

Lorsque vous utilisez onChangeDateTime ou même un hook onChange personnalisé, il se comporte comme si le champ était mis à jour indéfiniment. Probablement causé par le plugin. Peut-être la même chose que @GuruprasadRao dit. Si vous me le permettez, j'aimerais vous recommander le programme datepicker de jQuery UI. Il fonctionne très bien. https://jqueryui.com/datepicker/ – hack3rfx

+0

J'ai mis à jour ma réponse, cela fonctionne maintenant – hasan

Répondre

0

Date.prototype.addDays = function(days) { 
 
    var dat = new Date(this.valueOf()); 
 
    dat.setDate(dat.getDate() + days); 
 
    return dat; 
 
} 
 

 
$("#datetimepicker").on("change", function(){ 
 
    var date= new Date().addDays(3); 
 
    var selected = new Date($(this).val()); 
 
    var current = new Date(); 
 
    if(selected > current && selected < date) 
 
    { 
 
     // your code here 
 
     alert("success"); 
 
     
 

 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
 
<h3>Deadline:</h3> 
 
<input type="date" id="datetimepicker"/>

+0

Merci, pendant que cela fonctionne, je suis bloqué dans l'utilisation du plugin xdsoft pour le moment, car il est utilisé à travers le site :( –

+0

vous pouvez également utiliser cette réponse en obtenant la valeur de la date avec jquery – hasan

2

vérifier ce violon pour la solution. J'ai utilisé des dates codées en dur mais vous pouvez faire le formatage en conséquence. Il y a onSelectDate:function(ct){..... que vous pouvez utiliser.

$('#datetimepicker').datetimepicker({ 
    timepicker:false, 
    format:'d/m/Y', 
    formatDate:'Y/m/d', 
    minDate:'+1970/01/00', 
    onSelectDate:function(ct){ 

    var dateFrom = "06/08/2017"; 
    var dateTo = "06/11/2017"; 
    var dateCheck = "06/09/2017"; 

    var d1 = dateFrom.split("/"); 
    var d2 = dateTo.split("/"); 
    var c = dateCheck.split("/"); 

    var from = new Date(d1[2], parseInt(d1[1])-1, d1[0]); // -1 because months are from 0 to 11 
    var to = new Date(d2[2], parseInt(d2[1])-1, d2[0]); 
    var check = new Date(c[2], parseInt(c[1])-1, c[0]); 

    alert(check > from && check < to); 
    }, 
}); 

https://jsfiddle.net/oqw90cbu/5/

+0

vos valeurs de date constante? – hasan

+0

var dateFrom = "06/08/2017" – hasan

+0

j'ai utilisé votre jsfiddle., mais xdsoft a la fonction onSelectDate. vous pouvez faire similaire.Lire la liste complète des options à http://xdsoft.net/jqplugins/datetimepicker/ – tech2017