2
votes

Problème de désactivation des années inférieures à 18 ans dans le sélecteur de date bootstrap

Travailler sur un formulaire dans lequel j'utilise le sélecteur de date bootstrap pour afficher la date à l'utilisateur. J'ai un champ de date de naissance dans lequel j'essaie de désactiver les années de tout utilisateur inférieur à 18 ans à compter de la date actuelle. Par exemple, puisque nous sommes en 2019, le sélecteur de date ne devrait afficher que les années en dessous de 2001, par exemple 2001, 2000, 1999, 1998, 1997 etc

Cela fonctionne bien (années) mais j'ai un problème en désactivant les mois et les jours spécifiques, pour instance puisque nous sommes au 01/02/2019, le sélecteur de date devrait désactiver toute date postérieure au 1er février 2001

Date de naissance

var maxBirthdayDate = new Date();
maxBirthdayDate.setFullYear( maxBirthdayDate.getFullYear() - 18 );
maxBirthdayDate.setMonth(11,31);
$( function() {
  $( "#dob" ).datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: 'yy-mm-dd',
    maxDate: maxBirthdayDate,
    yearRange: '1900:'+maxBirthdayDate.getFullYear(),
  });
});

Logique Javascript

//dob
<div class="form-line registar love">
      <input type="text" placeholder="Date of Birth *" class="form-input" name="dob" id="dob" value="#" title="You should be over 18 years old" required>

      <label class="error error-tip" for="dob" id="dobErr" style="display: none; color:red; font-size: 11px;">You should be over 18 years old</label>
 </div>
//end dob


0 commentaires

3 Réponses :


0
votes

Vous pouvez valider avec minDate et maxDate de manière très simple pour empêcher les utilisateurs de sélectionner DOB avant 18 ans.

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
<script src="https://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>


<p>Date: <input type="text" id="dob" /></p>
$("#dob").datepicker( { minDate: '-30Y',dateFormat: 'dd/mm/yy', maxDate: '-18Y' });


5 commentaires

, Votre suggestion ne fonctionne pas, je veux des années, des mois et des dates inférieurs à 18 ans à partir de l'année en cours d'invalidité, .. Veuillez relire ma question ..


@Martin $ ("# dob"). Datepicker ({minDate: '-30Y', dateFormat: 'jj / mm / aa', maxDate: '-18Y'}); Cela peut résoudre


Avez-vous essayé ceci @Martin


Hey Pouvez-vous répondre à cette question: bootstrapdatepicker Je l'ai ajouté il y a une semaine, j'ai fait des recherches, mais je n'arrive pas à trouver la solution. J'apprécierais grandement votre aide


J'ai également répondu à cette question. Jetez un oeil @Martin



0
votes

avec date JS et sélecteur de date bootstrap:

$('#dob').datepicker({ 
   startDate: yearsago
});

ou avec Moment.js

var yearsago = moment (new Date ()). subtract (18 , 'années'). format ("JJ-MM-AAAA");

$('#dob').datepicker('setStartDate', yearsago);

ou

var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!

var yyyy = today.getFullYear() -18;
if (dd < 10) {
    dd = '0' + dd;
} 
if (mm < 10) {
    mm = '0' + mm;
} 
var yearsago = mm + '/' + dd + '/' + yyyy;


2 commentaires

, Vous ne savez pas comment implémenter votre logique sur le sélecteur de date


pour moi, minDate ne fonctionne pas avec bootstrap datepicker. cela fonctionne bien avec js datepicker. pour bootstrap datepicker, utilisez startDate au lieu de min date et passez simplement la date avant 18 ans



2
votes

pour bootstrap-datepicker (^ 1.9.0) Je l'ai résolu en utilisant.

$('#dob').datepicker({ endDate: '-18Y' });


1 commentaires

incroyable chère, je ne sais pas pourquoi mais il me manquait cette chose facile, au lieu d'années, j'utilisais + 0d, merci :)