2017-03-02 4 views
0

jQuery Datepickerを生年月日入力用に使用しています。jQuery datepickerの選択日が5歳未満の場合はdivを表示/追加

人の年齢が5歳未満の場合、入力フィールドの上にテキストを表示または追加したいとします。

私は変数として今日の日付を取得し、今日から5年を差し引いて、次に言う:選択した日付が今日と(今日の日付から5年間)の間にある場合、このメッセージを表示します。しかし、私はそうする方法を苦労している!あなたのDateFieldで

答えて

0

dateChange(と呼ばれるOnChangeイベントを追加)

function dateChange() { 
var d = new Date(); 
var currYear = d.getFullYear(); -- Returns the year 
var dateSelected = document.getElementfromId("<your Date Element ID>") 
-- you can use parsing based on the date format you use in datePicker. 

-- find the difference between currYear and year user choose 
if (diffrence < 5){ 
-- write your code 
} 
} 
+0

ありがとうございました。 Ivは今、動作することを望んでいるが、プラグインによってdatepickerが追加されているので、OnChangeイベントを追加することはできません。私は何ができるのか知っていますか? 'function dateChange(){ var d = new Date(); アラート(d); var currYear = d.getFullYear(); // - 年を返します var dateSelected = document.getElementfromId( "eo-booking-field-26"); var selectedYear = dateSelected.substr(dateSelected.length - 4); var currYear5Years = currYear-5; if((SelectedYear currYear5Years)){ alert(selectedYear); } } – Futwill

+0

Ivはまた、これが唯一の年に焦点を当て、必要な他の部分では機能しないことを認識しました。 たとえば、もし彼らが2012年3月5日に生まれた(そして今日は2017年3月5日)なら、彼らはまだ5歳未満ですが、私のコードは年を比較しているだけなので、 – Futwill

0

あなたは、日付ピッカーのにonSelectイベントを使用することができます。残念ながら、onSelectは日付が選択されたときはいつでも、変更されていなくても起動します。これはdatePickerの設計上の欠陥です。onSelect(変更されていなくても)は常に発生し、変更の際には元の入力に対してイベントを発生させません。 (この例のコードを見ると、変更を聞いていますが、発生していません)。事態が変化したときに入力イベントを発生させるはずです(おそらく、通常の変更イベントまたはおそらくdatepicker特有のもの)。

$(".date").datepicker({ 
    onSelect: function() { 
    $(this).change(); 
    } 
}); 

任意のハンドラがjQueryを介して、フックアップのための基本となる入力の変化が発生します:あなたが好きなら、もちろん、あなたが入力火の変更イベントを行うことができます。しかし、再び、それは常にそれを発射する。あなたが実際の変更にのみ発砲したい場合は、以前の値を(おそらくデータを介して)保存して比較する必要があります。

次の機能を使用して、2つの日付の違いを調べます。

// datepart: 'y', 'm', 'w', 'd', 'h', 'n', 's' 
Date.dateDiff = function(datepart, fromdate, todate) { 
    datepart = datepart.toLowerCase();  
    var diff = todate - fromdate; 
    var divideBy = { w:604800000, 
        d:86400000, 
        h:3600000, 
        n:60000, 
        s:1000 };  

    return Math.floor(diff/divideBy[datepart]); 
} 
関連する問題