11
votes

Ajouter "ST, ND ND, RD, TH" à JQuery DatePicker

Comment puis-je ajouter ST, ND, RD, TH au format à jour .. Ie le 19 novembre, le 2 décembre, etc.

Actuellement, j'ai suivi du code P>

    $( "#datepicker" ).datepicker({
        altField: "#alternate",
        altFormat: "DD, MM d ",
                    minDate: +0
    });


1 commentaires

Le format repose sur FormatDate () , en regardant le Docs il ne semble pas supporter ce format particulier


8 Réponses :


14
votes

Depuis le formatDDate () n'a pas cette option.

Edit: Oui, vous aviez raison, désolé ma réponse ne vous a pas aidé, je suis nouveau à cela. J'espère que cela aide cette fois-ci :)

Ajoutez une fonction OnSélectionnez à DatePicker init, quelque chose comme ceci: xxx

Il ajoute le suffixe au champ de remplacement Chaque fois que vous sélectionnez une date.


2 commentaires

Ce lien ne semble pas être répondu non plus.


A fonctionné parfaitement pour moi, bien que vous puissiez également appliquer "ST" pour les cas 21 et 31 , appliquer "ND" pour 22 et appliquer 'RD' pour 23 . Puisque JavaScript tombe sur des déclarations de cas jusqu'à ce qu'il voit une pause Vous pouvez simplement ajouter case '21': cas '31': après case '1': < / code> et avant suffixe (et de même pour les autres numéros)



0
votes

Consultez cette demande de traction sur le repo JQueryui: https://github.com/ jquery / jquery-ui / pull / 438


0 commentaires

2
votes
    // Get the ordinal suffix for the given int value
var ordinalSuffix = function (val) {
var mod = val % 10;
if (mod === 1 && val !== 11) {
return 'st';
} else if (mod === 2 && val !== 12) {
return 'nd';
} else if (mod === 3 && val !== 13) {
return 'rd';
} else {
return 'th';
}
};

0 commentaires

5
votes

Chris West possède une définition assez courte et douce pour une fonction générant des ordinales pour tous les entiers. Sur Cette page Il montre même comment vous pouvez facilement utiliser sa fonction pour ajouter des ordinaux à Tous les numéros d'une chaîne.


0 commentaires

0
votes

Est-ce que cela aide? xxx


0 commentaires

2
votes

Selon les règles de la grammaire, vous ne devez pas ajouter "TH", "ND", "RD", et "ST" à des dates lors de l'affichage comme "31 mars" ou "31 avril 2003". Vous ne les utilisez que lorsque vous affichez le "6 mars" ou le "23 juin".

voir Ce pour plus d'informations.


0 commentaires

0
votes

Je réalise que c'est une vieille question, mais je pensais poster ma solution au cas où que ce soit, le même problème trouve ce post. Cette méthode ne casse pas la date sélectionnée lors de l'ouverture du calendrier, etc. Ceci utilise le format D {suffixe} m yy I.e. '30e sept. 2013'

$.datepicker.origParseDate = $.datepicker.parseDate;
$.datepicker.parseDate = function(format, value, settings) {
  if ( $.isPlainObject(format) && format.hasOwnProperty('parse') && $.isFunction(format.parse) ) {
    return format.parse.call(this, value, settings, $.datepicker.origParseDate);
  } else {
    $.datepicker.origParseDate(format, value, settings);
  }
};
$.datepicker.origFormatDate = $.datepicker.formatDate;
$.datepicker.formatDate = function(format, date, settings) {
  if ( $.isPlainObject(format) && format.hasOwnProperty('format') && $.isFunction(format.format) ) {
    return format.format.call(this, date, settings, $.datepicker.origFormatDate);
  } else {
    $.datepicker.origFormatDate(format, date, settings);
  }
};

$('.datepicker').datepicker({
  dateFormat: {
    parse: function(value, settings, originalParseDate) {
      value = value.replace(/[a-z][^\s]+/, '');
      return originalParseDate.call(this, 'd M yy', value, settings);
    },
    format: function(date, settings, originalFormatDate) {
      date = originalFormatDate.call(this, 'd M yy', date, settings).split(' ');
      date[0] += (function(n) {
        n = (+n % 100).toString().split('');
        if (n.length > 1 && n.shift() === '1' || +n[0] > 3) {
          return 'th';
        } else {
          return ['th', 'st', 'nd', 'rd'][+n[0]];
        }
      })(date[0]);
      return date.join(' ');
    }
  }
});


0 commentaires

0
votes

dateformat n'utilise pas "s" comme type de format, donc dans les options que j'ajoute habituellement -

dateFormat : "DD ds MM, yy",
onSelect: function(dateText, inst) {
    var arrOrd = new Array('0','st','nd','rd','th','th','th','th','th','th','th','th','th','th','th','th','th','th','th','th','th','st','nd','rd','th','th','th','th','th','th','th','st');
    var day = Number(inst.selectedDay);
    var suffix = arrOrd[day];       
    $(this).val($(this).val().replace(inst.selectedDay+"s",inst.selectedDay+suffix));
}


0 commentaires