1

Ich bin die Zeit, in der Datetime im Format LLLL Anzeige durch die folgenden Optionen mitformValidation mit Datetimepicker und Format (‚LLLL‘)

$('#meeting_datetime').datetimepicker({defaultDate: tomorrowsDate, stepping: 5, format: 'LLLL'}); 

alles, was gut funktioniert, aber jetzt möchte ich bestätigen möchte, dass Feld und ich dachte, es nur als

$('#manage_jc_settings_form') 
     .formValidation({ 
      framework: 'bootstrap', 
      excluded: ':disabled', 
      ignore: [], 
      icon: { 
       valid: 'glyphicon glyphicon-ok', 
       invalid: 'glyphicon glyphicon-remove', 
       validating: 'glyphicon glyphicon-refresh' 
      }, 
      fields: { 
       meeting_datetime: { 
        validators: { 
         notEmpty: { 
          message: 'The date is required' 
         }, 
         date: { 
          format: 'LLLL', 
          message: 'The date is not valid' 
         }, 
         callback: { 
          message: "The next meeting can't be in the past", 
          callback: function (value, validator) { 
           var m = new moment(value, 'LLLL', true); 
           return (m > todaysDate); 
          } 
         } 
        } 
       } 
      } 
     } 
    }); 

aber diese Weise wird das Datetime-Feld überprüft nicht funktionieren sollte. Kann jemand das LLLL-Format in der Validierung verwenden? Ich bin mit dem formValidation Plugin http://formvalidation.io/ dank carl

Antwort

1

Das Datum Prüfungstyp nicht unterstützt diese Art der Formatierung. Sie müssen den Callback-Validierungstyp mit dem Moment verwenden. Da Sie jedoch bereits über einen Rückruftyp verfügen und eine andere Nachricht zurückgeben müssen, müssen Sie die dynamische Nachricht verwenden.

http://formvalidation.io/validators/callback/#dynamic-message-example

function(value, validator, $field) { 
    // ... Do your logic checking 
    if (...) { 
     return { 
      valid: true, // or false 
      message: 'The error message' 
     } 
    } 

    return { 
     valid: false,  // or true 
     message: 'Other error message' 
    } 
} 

tun dann einen Scheck für die Gültigkeit des Datums und für die eine Meldung zurück. Überprüfen Sie, ob das Datum größer als das heutige Datum ist, und geben Sie eine andere Nachricht zurück.

0

Wenn todaysDate ist kein Moment ist es dann erstellen:

todaysMomentDate = moment(todaysDate); 

dann vergleichen:

var diffDuration = moment.duration(m.diff(todaysMomentDate); 
return diffDuration.asMilliseconds() < 0; 
+0

hi ... Entschuldigung, ich hätte das Beispiel weiter reduzieren sollen. Es ist nicht die Callback-Funktion, die nicht validiert ... diese Funktion funktioniert gut. Es ist die Validierung des Datumsformats, die fehlschlägt. Daher erwähnte ich das LLLL-Format im Titel – carl

+0

oh, ich verstehe. Ich würde in Ihre Frage einbeziehen, welchen Rahmen Sie verwenden, um die Validierung durchzuführen, da es viele gibt, und ich kann den, den Sie verwenden, nicht finden. Beachten Sie, dass "LLLL" keine Standard-JavaScript-Notation ist. Es wird von Bibliotheken wie Moment implementiert, aber es ist möglicherweise nicht das selbe für welche Validierungsbibliothek, die Sie verwenden. – algorithmicMoose

+0

Ja, das ist mein Verdacht, aber aus der Dokumentation konnte ich nicht herausfinden, wie dieses bestimmte Format zu validieren ... Ich benutze formValidation http://formvalidation.io/ – carl