Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision aaa71ae8

Von Sven Schöling vor fast 7 Jahren hinzugefügt

  • ID aaa71ae8b899069cb0d820d17f0f707b0453d8f9
  • Vorgänger 18c72e9a
  • Nachfolger 317af023

Validator: experimentelle Parametersyntax für validator checks

Solch ein check:

data-validator="in_range(-2,15)"

wird weiter an den validator "number" dispatcht, reicht aber die
Argumente weiter:

checks.in_range($e, -2, 15);

Vorsicht, das ist kein vollständiges Parsing. Es wird einfach nur der
Inhalt der Klammern am Komma gesplittet. Leerzeichen sind bereits belegt
um mehrere Checks zu unterscheiden, also darf zwischen den Argumenten
kein Whitespace stehen. Escaping von Argumenten in denen "," vorkommt
gibt es auch nicht.

Unterschiede anzeigen:

js/kivi.Validator.js
31 31

  
32 32
  ns.validate = function($e) {
33 33
    var tests = $e.data('validate').split(/ +/);
34
    var args;
34 35

  
35 36
    for (var test_idx in tests) {
36 37
      var test = tests[test_idx];
38

  
39
      var has_args = /^(\w+)\((.*)\)$/.exec(test);
40
      if (has_args) {
41
        test = has_args[1];
42
        args = has_args[2].split(/,/);
43
      } else {
44
        args = [];
45
      }
46

  
37 47
      if (!ns.checks[test])
38 48
        continue;
39 49

  
40 50
      if (ns.checks[test]) {
41
        if (!ns.checks[test]($e))
51
        if (!ns.checks[test].apply(undefined, [$e].concat(args)))
42 52
          return false;
43 53
      } else {
44 54
        var error = "kivi.validate_form: unknown test '" + test + "' for element ID '" + $e.prop('id') + "'";
......
61 71
        return true;
62 72
      }
63 73
    },
64
    number: function($e) {
74
    number: function($e, places) {
65 75
      var number_string = $e.val();
66 76

  
67 77
      var parsed_number = kivi.parse_amount(number_string);
......
76 86
        return false;
77 87
      } else
78 88
      {
79
        var formatted_number = kivi.format_amount(parsed_number);
89
        var formatted_number = kivi.format_amount(parsed_number, places);
80 90
        if (formatted_number != number_string)
81 91
          $e.val(formatted_number);
82 92
        ns.annotate($e);

Auch abrufbar als: Unified diff