2010-11-20 16 views
0

私はkelvin lucks jquery date pickerを使用しています。Jquery日付ピッカーの.bindイベントonLoadを実行します。

開始日を選択すると、同じ日付が終了日に割り当てられ、終了日によってその開始日より前の日付の選択が禁止されるように、開始日と終了日のピッカーが設定されています。

開始日に触れることなく終了日を選択すると、開始日の前に終了日を設定することができます。良くない!

$(function() 
{ 
    $('.date-pick').datePicker({startDate:'2000-01-01', clickInput:true}) 

     $('#start-date').bind('dpClosed', function(e, selectedDates) { 
       var d = selectedDates[0]; 
       if (d) { 
      d = new Date(d); 
      $('#end-date').dpSetStartDate(d.addDays(0).asString()).dpSetSelected(d.asString()).val($(this).val()); 
     } 
    }); 
}); 

私はPHPを使用して、入力フィールドを予備充填していますので、私がやりたいすべてがトリガー$('#end-date').dpSetStartDateので、終了日の更新をするとき、ドキュメントが読み込まことです。現時点では更新のみ$('#start-date').bind('dpClosed', function(e, selectedDates) {

どうすればよいですか?私が正しく理解していれば

おかげで、

ティム

+0

$(function(){});は、document.readyへのバインディングのショートカットです。文書の準備ができるまで、その内部のすべてが実行されません。あなたの質問を明確にすることができますか? – Alex

+0

申し訳ありません...私は自分自身を混乱させました。私がしたいのは、$( '#end-date')をトリガーすることだけです.dpSetStartDateは、ドキュメントの読み込み時に終了日が更新されるようにします。現在のところ、$( '#start-date')だけが更新されています。bind( 'dpClosed'、function(e、selectedDates){ – Tim

答えて

1

引数からselectedDatesを試しているので、残念なことにイベントをトリガーすることはできません。ただし、そのデータを取得する別の方法があります:$('#start-date').dpGetSelected()

$(function() { 
    $('.date-pick').datePicker({startDate:'2000-01-01', clickInput:true}); 
    $('#start-date').bind('dpClosed', function(e, selectedDates) { 
     var d = $('#start-date').dpGetSelected()[0]; 
     if (d) { 
     d = new Date(d); 
     $('#end-date').dpSetStartDate(d.addDays(0).asString()).dpSetSelected(d.asString()).val($(this).val()); 
    } 
    }).trigger('dpClosed'); //call that event handler we just bound 
}); 

You can test it out here:これを使用することによって、あなたはその後、.trigger()いつでも好きなときにイベントが(すぐに)このような#end-date範囲を、更新することができます。

+0

素晴らしい!私はこれを行うよりスマートな方法があったかもしれないと思ったが、それはちょうどmindblowingly驚くばかりだ!その正確に私が必要なもの。素晴らしい週末を! – Tim

+0

@Tim - あなたもね :) –

0

は、ユーザーが終了日付フィールドに入力した日付が、彼らは開始日フィールドに入力した日付以降にあることを確認しようとしています。

これを行うには、日付ピッカーの両方のためにdpClosedイベントにバインドする必要があり、このロジック(擬似コード)のようなものを実行します:

var start = getSelectedStartDate(); 
var end = getSelectedEndDate(); //you'll need to write these functions, but you get the idea 
if (end < start) { 
    // set the end date field to the selected start date 
    $("#end-date").dpSetSelected(start); //not sure if this is the only thing you have to do, but again, you get the idea 
} 

ので、ここでの考え方は、もし今までにありユーザーがいずれかのフィールドで日付を選択すると、終了日が開始日より前になり、開始日が終了日フィールドに配置されます。

+0

こんにちはBrandonさん、お返事ありがとうございます。 $( '#end-date')を実行してください。ユーザーが$( '#start-date')をトリガーするのではなく、ページの読み込みにdpSetStartDateを実行してくださいbind( 'dpClosed'、function(e、selectedDates){。私はjQueryをうまく使っていないのですか? – Tim

関連する問題