0

J'essaie d'utiliser la fonction hover() de JQuery pour faire du formatage sur mon DatePicker lorsque j'entre la souris dans l'une de ses lignes mais malheureusement mon hover() n'est jamais appelé.Hover bootstrap datepicker

Voici comment j'initialiser mon datepicker:

//WEEK PICKER 
moment.locale('fr', { 
    week: { dow: 1 } // Monday is the first day of the week 
}); 

//Initialize the datePicker(I have taken format as mm-dd-yyyy, you can  //have your owh) 
$("#weeklyDatePicker").datetimepicker({ 
    format: 'MM-DD-YYYY' 
}); 

//Get the value of Start and End of Week 
$('#weeklyDatePicker').on('dp.change', function (e) { 
    var value = $("#weeklyDatePicker").val(); 
    var firstDate = moment(value, "MM-DD-YYYY").weekday(0).format("MM-DD-YYYY"); 
    var lastDate = moment(value, "MM-DD-YYYY").weekday(6).format("MM-DD-YYYY"); 
    $("#weeklyDatePicker").val(firstDate + " - " + lastDate); 
}); 

Voici comment je mettre ma fonction hover():

$(".bootstrap-datetimepicker-widget tr").hover(
    function() { 
    console.log('in'); 
    }, function() { 
    console.log('out'); 
    } 
); 

Mais pas de journaux sont en cours d'écriture. Je suis sûr d'avoir le sélecteur à droite parce que je suis arrivé dans mon CSS:

.bootstrap-datetimepicker-widget tr:hover { 
    background-color: #808080; 
} 

Et la couleur est mise à jour lorsque la souris passe en vol stationnaire.

Une idée?


EDIT

Voici un Jfiddle qui reproduisent mon code: https://jsfiddle.net/5kzjvL1u/

+0

Si '.bootstrap-datetimepicker-widget' est chargé dans les DOM après la page est chargée (et je soupçonne que ce soit), il ne peut pas être sélectionné de cette façon. Vous devrez faire quelque chose comme '$ (body) .on ('hover', '.bootstrap-datetimepicker-widget tr', function() {});' –

+0

Cela ne semble pas changer quoi que ce soit. Mais en réalité, je ne pense pas que le '.bootstrap-datetimepicker-widget' soit chargé avant la page car il n'apparaît qu'après un clic sur un champ de saisie. Dois-je appeler le hover() sur l'événement click de l'entrée? – MHogge

+1

Serait plus facile à dépanner si nous pouvions voir le code en action pour mieux savoir ce qui se passait. –

Répondre

1

Je crois que Robert C est correct dans son commentaire en ce qu'il est en cours de chargement intor les DOM après la page chargée et vous avez raison dans votre suggestion de placer le :hover dans un événement de clic pour le champ de saisie. Voir cet extrait pour un exemple de travail.

$(document).ready(function() { 
 
    moment.locale('fr', { 
 
    week: { 
 
     dow: 1 
 
    } // Monday is the first day of the week 
 
    }); 
 

 
    //Initialize the datePicker(I have taken format as mm-dd-yyyy, you can  //have your owh) 
 
    $("#weeklyDatePicker").datetimepicker({ 
 
    format: 'MM-DD-YYYY' 
 
    }); 
 

 
    $('#weeklyDatePicker').on('dp.change', function(e) { 
 
    var value = $("#weeklyDatePicker").val(); 
 
    var startDate = moment(value, "MM-DD-YYYY").weekday(0).format("MM-DD-YYYY"); 
 
    var endDate = moment(value, "MM-DD-YYYY").weekday(6).format("MM-DD-YYYY"); 
 
    $("#weeklyDatePicker").val(startDate + " - " + endDate); 
 
    }); 
 

 
    $("#weeklyDatePicker").click(function() { 
 
    $(".bootstrap-datetimepicker-widget tr").hover(
 
     function() { 
 
     console.log('in'); 
 
     }, 
 
     function() { 
 
     console.log('out'); 
 
     } 
 
    ); 
 
    }); 
 
});
.bootstrap-datetimepicker-widget tr:hover { 
 
    background-color: #808080; 
 
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/css/bootstrap-datetimepicker.css" rel="stylesheet" /> 
 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" /> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<script src="https://cdn.jsdelivr.net/momentjs/2.10.6/moment.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> 
 

 
<script src="https://cdn.jsdelivr.net/bootstrap.datetimepicker/4.17.37/js/bootstrap-datetimepicker.min.js"></script> 
 

 
<div class="container"> 
 
    <div class="row"> 
 
    <div class="col-sm-6 form-group"> 
 
     <div class="input-group" id="DateDemo"> 
 
     <input type='text' id='weeklyDatePicker' placeholder="Select Week" /> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

+0

Oui, mais il y a probablement des fuites. Les gestionnaires d'événements Js ont une mauvaise tendance à traîner même lorsque les nœuds auxquels ils sont attachés ont été retirés du DOM. –

+0

Je refuse mon acceptation parce que je suis toujours coincé sur un problème avec ceci: quand nous cliquons sur le bouton suivant ou précédent cela ne fonctionne plus. J'ai essayé d'ajouter un rappel de clic sur ces boutons à l'intérieur du rappel de clic de l'entrée mais cela ne fonctionne pas, aucune idée? – MHogge

+0

Vous pouvez passer de '.hover' à' mouseenter' et utiliser la délégation d'événements pour cibler les lignes. Vous pouvez ensuite utiliser 'mouseleave' sur' .bootstrap-datetimepicker-widget' pour détecter quand vous quittez la boîte dans son ensemble. [DEMO codepen] (https://codepen.io/jbanegas/pen/WZWzZz?editors=1111). Si cela atteint votre objectif, je vais mettre à jour ma réponse. –