1

JQGrid の colModel の一部として、次のものがあります。

{name:'revisedDate', width:220, editable: true, datefmt:'yyyy/mm/dd',edittype:'text',editrules:{date:true, required:true},search:true, stype:'text'}

datefmt と date:true は、1 つの特殊なケースを除いて、期待どおりに機能しているようです。現在、ユーザーが「2012/04/」と入力すると、jqgrid はこれを有効な日付値として受け入れますが、日付が欠落しています。他のすべての誤ったバリエーションでは、フォームの上部にエラー メッセージが表示され、次のテキストが表示されます。有効な日付値を入力してください - yyyy-mm-dd.

また、colModel を使用するように変更しようとしましたが、datefmt:'yyyy-mm-dd成功しませんでした。

私が間違っていることはありますか?私の次のステップは、カスタム フォーマッタを展開することですが、それは不要なようです。

JQGrid のバージョン: 4.3.1

解決策: beforeSubmit イベントの文字列に対して正規表現をテストし、そのままにしておきましeditrules{date:true}た。日付の検証の大部分は組み込みの datefmt によって行われるため、以下の正規表現は実際にはそのバグの応急処置にすぎません。より理想的な解決策は、すべての日付の検証を同じ場所で行うことですが、このフォームを使用しても、余分な時間を費やす価値はありません。

var datePattern = new RegExp(/[0-9]{4}\/[0-9]{2}\/[0-9]{2}/g);
            var revised = $("#revisedDate").val();
            if(!datePattern.test(revised))
            {
                return[false, "Revised Date (YYYY/MM/DD/): Please enter valid date value - YYYY/MM/MM"];
            }
            return [true, "Success"];
4

1 に答える 1

1

を実装しているjqGridのソースコードを調べることができますeditrules: {date: true}。ここにいくつかの行があり、ここに内部関数$.jgrid.checkDate があります制限が多すぎることがわかります。日付の多くの形式はサポートされていません。たとえば、標準の「en-us」形式の日付 ( 'n/j/Y'を参照) はサポートされていません。

したがって、代わりにカスタム検証を使用することをお勧めします。私は個人的には決して使用しませんeditrules: {date: true}

于 2013-05-08T19:10:24.703 に答える