2016-11-09 3 views
0

jQueryのvalidate pluginとmaskedInputプラグインを使用して、入力に対してカスタムの日付と時刻の検証を行いました。dateTimeの検証で将来の年を防ぐ方法を教えてください。

このカスタム検証では、今年よりも大きな年を入力できないように検証する方法はありますか?

マイコード:

$("#date").mask("99/99/9999 99:99", { 
 
    placeholder: "mm/dd/yyyy hh:mm" 
 
}); 
 
$.validator.addMethod("dateTime", function(value, element) { 
 
    var stamp = value.split(" "); 
 
    var validDate = !/Invalid|NaN/.test(new Date(stamp[0]).toString()); 
 
    var validTime = /^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))?$/i.test(stamp[1]); 
 
    return this.optional(element) || (validDate && validTime); 
 
}, "Invalid datetime."); 
 

 
$('#form').validate({ 
 
    rules: { 
 
    date: { 
 
     required: true, 
 
     dateTime: true 
 
    } 
 
    }, 
 
    messages: { 
 
    date: { 
 
     required: "" 
 
    } 
 
    } 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.maskedinput/1.4.1/jquery.maskedinput.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.15.1/jquery.validate.min.js"></script> 
 

 
<form action='' method='post' id='form'> 
 
    <input type='text' name='date' value='' id='date' placeholder='mm/dd/yyyy hh:mm'> 
 
</form>

答えて

1

私はすでに、私は全体の検証を行い、trueまたはfalseを返すメソッドを持っている検証ルールに

$('#form').validate({ 
    rules: { 
    date: { 
     required: true, 
     dateTime: true, 
     minYear: true 
    } 
    }, 
    messages: { 
    date: { 
     required: "" 
    } 
    } 
}) 
+0

ありがとう。あなたのコードを少し修正しました。 'myDate'の代わりに' year'を指定し、エラーメッセージも追加してください。私はあなたが複数のカスタムメソッドを追加できるようになった今まで知りませんでした。 – Ionut

+0

@Ionut Galdは助けました。私はそのタイプミスを修正しました。 –

1

あなたはこのようなaddMethodを使用して、独自のメソッドを作成することができます。

jQuery.validator.addMethod("minDate", function (value, element) { 
    var now = new Date().getFullYear(); 
    var myDate = new Date(value).getFullYear(); 
    return this.optional(element) || myDate < now; 
}); 

$('#form').validate({ 
    rules: { 
     date: { 
     required: true, 
     dateTime: true, 
     minDate: true 
     } 
    }, 
    messages: { 
     date: { 
     minDate: "The date(year) must not be in the future" 
     } 
    } 
}) 

は、この情報がお役に立てば幸い!

+0

を同じに追加年

jQuery.validator.addMethod("minYear", function (value, element) { var year = new Date(value).getFullYear(); var curentYear = new Date().getFullYear(); return this.optional(element) || year <= curentYear; }, 'Year can not be greater than current year'); 

をチェックするための新しい方法を追加日付時刻。それは私の場合どのように機能しますか? – Ionut

+0

'Date()'メソッドの前に '.getFullYear()'を追加して、年にそれを取る –

関連する問題