2016-04-11 9 views
0

私はdatepickerを持っていて、手動で日付を入力すると、カレンダーを使用せずにmm/dd/yyyyという形式の値を入力することに気づきました。Jquery、datepicker on manual entry

私は手動で日付を変更する可能性を許可したいと思います。したがって、更新の日付を入力する必要があります。

私はこのような機能changeを使用しようとすることによって開始:

$('myDatepickerId').change(...) 

それは私がonClose:属性を発見したいくつかの研究の後にそう働いていませんでした。私はこのように使用

onClose: function(date) { 
      this_.tripWidget.inputChanged({ 
       date : date, 
      }); 
     } 

これは、日付を更新しますが、私はそれを検証するかどうかはわかりません。

datepickerに関連付けられた関数を探して、入力した日付が正しい形式であることを確認しています。とにかく、日付が日付ピッカーのカレンダーにあることを確認するには?

編集:

私はここに関連する質問が見つかりました: Detecting an "invalid date" Date instance in JavaScript

その後、私は私の問題に答えを適応させるために(失敗した)試してみました:

onClose: function(date) { 
      this_.tripWidget.inputChanged({ 
       if (Object.prototype.toString.call(date) === "[object Date]" && !isNaN(date.getTime()){ 
        alert("Please enter a valid date."); 
       } 
       date : date, 
      }); 
     } 
+0

私は関連質問が見つかりました:私はできないよしかし、http://stackoverflow.com/questions/1353684/detecting-an-invalid-date-date-instance-in-javascriptを私の問題への答えを適応させる。 – user1527152

答えて

0

です私は私の問題を解決しました:

var comp = date.split('/'); 
var m = parseInt(comp[0], 10); 
var d = parseInt(comp[1], 10); 
var y = parseInt(comp[2], 10); 
var date2 = new Date(y,m-1,d); 
if(!(date2.getFullYear() == y && date2.getMonth() + 1 == m && date2.getDate() == d)) { 
       alert('Please enter a valid date.'); 
} 
0

これは何かであるかもしれませんあなたは、javascriptの代わりにリクエストを送信するときにサーバースクリプトで検証したいと思っています。

+3

もちろん、データは常にサーバー側で検証する必要があります。しかし、ユーザビリティの向上を考慮すると、クライアント側の検証も推奨されます。ところであなたの "答え"はコメントでなければなりません.... –

+0

@IntercoolerTurbo私を許してください。 – Maxhirez

+1

私はしようとします:) –

0

DatePickerコントロールとは独立して、検証を行う必要があります。あなたはそれが有効な日付とBだことを確認してください)Aにこのような何かを行うことができます)、それはYYYY/MM/DDの所望の形式で

$('#myDatepickerId').on('input', function() { 
    var value = $(this).val(); 
    if (isValidFormat(value) && isValidDate(value)) { 
     $(this).addClass('valid'); 
    } 
}); 

function isValidFormat(value) { 
    var regex = new RegExp("^([01][0-12]\/[0-3][0-9]\/[12][0-9][0-9][0-9])$"); 
    return regex.test(value); 
} 
function isValidDate(value) { 
    var date = new Date(value); 
    return date != 'Invalid Date'; 
} 

だことを確認ここで、次のコードはどのようにあるworking plunker