1

次のオプションを使用して、datetimepicker の時刻を LLLL 形式で表示しています

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

すべて正常に機能しますが、今はそのフィールドを検証したいと思い、次のように機能するはずだと思いました

$('#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);
                            }
                        }
                    }
                }
            }
        }
    });

しかし、この方法では日時フィールドは検証されません。検証でLLLL形式を使用する方法を知っている人はいますか? formValidation プラグインhttp://formvalidation.io/を使用 しています。

4

2 に答える 2

1

日付検証タイプは、そのタイプのフォーマットをサポートしていません。モーメントでコールバック検証タイプを使用する必要があります。ただし、既にコールバック タイプがあり、別のメッセージを返す必要があるため、動的メッセージを使用する必要があります。

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'
    }
}

次に、日付の有効性をチェックし、それに対して 1 つのメッセージを返します。そして、日付がtodaysDateよりも大きいことを確認し、それに対して別のメッセージを返します。

于 2016-07-19T22:28:42.267 に答える
0

todaysDate が瞬間でない場合は、次のように作成します。

todaysMomentDate = moment(todaysDate);

次に、それらを比較します。

var diffDuration = moment.duration(m.diff(todaysMomentDate);
return diffDuration.asMilliseconds() < 0;
于 2016-07-19T20:51:28.857 に答える