9

Google で検索した後、このサイトとjQueryを検索しても、時間の値を検証する簡単な方法がないことがわかりました。

一見すると、 addMethodを使用することを提案し、 を使用して値を正規表現して、どのように見えるかを確認します。

しかし、jquery.validate.jsdateISO がどのようにチェックされたかを確認することにしました。それを行う方がはるかに簡単に思えたので、dateISO に関連するすべてのデータをコピーし、それを timeISO と呼び、文字列を変更して時刻を検証し、次の時刻文字列を使用しました。

^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$ 

私が持っている方法を変更してそれを行うべきではない理由はありjquery.validate.jsますか? グーグルとこのフォーラムでの私の検索はすべて提案されなかったので、少し心配しました.

4

3 に答える 3

16

にカスタム メソッドを追加できますjQuery.validate。おそらくこれに利用できるものがありますが、例としてこの 24 時間形式の検証をコーディングしました。

$.validator.addMethod("time24", function(value, element) {
    if (!/^\d{2}:\d{2}:\d{2}$/.test(value)) return false;
    var parts = value.split(':');
    if (parts[0] > 23 || parts[1] > 59 || parts[2] > 59) return false;
    return true;
}, "Invalid time format.");

フィドル

ドキュメンテーション

単一の正規表現 ( source )で要約することもできます。

([01]?[0-9]|2[0-3])(:[0-5][0-9]){2}

HTML5 を使用している場合は、次のpattern属性を使用できます。

<input type="text" pattern="([01]?[0-9]|2[0-3])(:[0-5][0-9]){2}" 
    required="required" placeholder="hh:mm:ss" />

フィドル

jQuery.validateただし、古いブラウザとの互換性が必要な場合は、この方法を使用してください。

$.validator.addMethod("time24", function(value, element) {
    return /^([01]?[0-9]|2[0-3])(:[0-5][0-9]){2}$/.test(value);
}, "Invalid time format.");

デモ

于 2012-08-19T19:19:27.290 に答える
4

しばらく経ちましたが、最善の解決策はadditional-methods.jsライブラリを確認することだと思います。( http://jqueryvalidation.org/からダウンロードできます)

"time12h""time"の 2 つの検証があります。

于 2015-05-18T03:36:45.480 に答える