Bonjour tout le monde,

J'ai un souci avec la dérivation de la validation jquery dans un site MVC avec Entiry Framework CodeFirst.

Je veux faire saisir une date appartenant à un intervalle de dates, donc je cherche à dériver la fonction range pour qu'elle puisse s'adresser aux intervalles de dates.

J'ai créé dans le répertoire Scripts un fichier Extend.js contenant ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
jQuery.extend(jQuery.validator.methods, {
    date: function (value, element) {
        return this.optional(element) || jQuery.global.parseDate(value) != null;
    },
    number: function (value, element) {
         return this.optional(element) || !isNaN(jQuery.global.parseFloat(value));
    },
  // http://docs.jquery.com/Plugins/Validation/Methods/range
  range: function (value, element, param) {
      alert('Extend.js');
      if (element.attributes["type"].value == "datetime") {
          var DateValue = new Date(value);
          param[0] = new Date(element.attributes["data-val-range-min"].value);
          param[1] = new Date(element.attributes["data-val-range-max"].value);
          value = DateValue;
      }
      return this.optional(element) || (value >= param[0] && value <= param[1]);
  }
 
});
 
function pipeau() {
    return "pipeau";
}
La fonction pipeau à la fin c'est parce que si je ne la mets pas, le module n'apparaît pas dans le débogueur de Firefox.

J'ai ouvert le fichier _layout.cshtml, et depuis l'explorateur de solutions j'ai fait glisser le Extend.js vers la surface de _layout.cshml, ce qui m'a fait apparaître à la fin du <head> :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<script src="/Scripts/Extend.js" type="text/javascript"></script>
J'ai aussi essayé en le mettant au début du <head>

J'ai une fonction range dans chacun des modules jquery de validation, j'ai ajouté dans chacune une instruction alert pour dire dans quelle module elle est, pour savoir ce qui s'exécute.

J'ai lancé le site, je suis allé dans le champ d'une date qui doit appartenir à un intervalle et j'en suis sorti. Systématiquement c'est jquery.validate.js qui s'affiche, alors que je m'attends à voir Extend.js.

Donc, au choix : de quoi-t-est-ce ? qu'est-ce qui se passe ? quezaco ?

Normalement il faut décomposer la valeur de retour en deux booléens, un pour le minimum et un pour le maximum, mais si je ne m'abuse ça ne devrait pas empêcher de voir s'afficher le bon nom de module.
Je soupçonne une erreur de syntaxe dans la déclaration de l'extension, pourtant j'ai eu l'impression de faire comme c'était dit.