2013-03-07 19 views
6

#date alanım olduğunu varsayalım.jQueryUI datepicker tarihinde eklendi Widget başlatıldıktan sonra 'onClose' fonksiyonunu ekleyin

$('#date').datepicker(options); 

Sonra ben onClose işlev eklemek denerseniz, yapardım: İlk başta (ki şu anda önemli değil) bazı seçenekler ile başlatmak

$('#date').datepicker({onClose: function(dateText, inst){console.log("Hello World");}}); 

Howerver, bu geçersiz kılmaları daha önce ayarlanmış seçenekler. Diyelim ki bu seçeneklere erişimim yok - datepicker başlatıldı, seçenekler belirlendi ve şimdi onClose işlevini eklemem gerekiyor. Bu nasıl yapılır? Hiçbir etkisi olmadan .datepicker('option','onClose',function(){}); denedim.

+1

Sen 'Bir id datepicker' sadece bir kez başlatmak olmalıdır: Aşağıda kod

function addCloseFunctionToDatePicker(id, funHandler) { var $datePicker=$('#' + id); var prevhandler = $datePicker.datepicker('option', 'onClose'); $datePicker.datepicker('option', { onClose: function (dateText, inst) { if (prevhandler) { prevhandler(dateText, inst); } funHandler(dateText, inst); } }); } 

çağrılması mekanizmasını pasajı edilir. Birden çok kez yapıyorsanız, ikincisi ilk seçenekleri geçersiz kılacaktır. Bu ne oluyor? –

+1

Evet. Bu yüzden 'onClose' işlevini eklemenin başka bir yoluna ihtiyacım var. – alekwisnia

cevap

6

bu deneyin

$('#date').datepicker('option' , 'onClose', function() {}); 
+0

Denediğim bu, ne işe yaramıyor :( – alekwisnia

0

olarak Deneyin:

$('#date').datepicker().bind('onClose',function(){ 
    console.log("Hello World"); 
}); 
+1

Aslında bu en yakın çözümdür. Seçeneklerimi değiştirdim, böylece olayları tetiklediler: 'onClose: function (dateText, inst) { $ (this) .trigger ("date_closed", [dateText, inst]} ' Ve sonra bu tetikleyiciyi istediğim her yerde kullanabilirim: ' $ ('# date'). on ('date_closed', function (dateText) inst) {}); Çok düzgün değil, ama benim ihtiyaçlarını karşılar :) – alekwisnia

+0

neden cevabımı reddediyorum !!!!? –

+0

Belki de '' on 'lehine' 'bend' tercih '] çünkü reddedildi (http: //api.jquery.com/bind/) ve tarihçinin bu kullanım için tasarlanan [bir seçenek yöntemi] (http://api.jqueryui.com/datepicker/#method-option) olduğundan – ChrisW

5

bu deneyin:

$('#date').datepicker(); 
... 
$('#date').datepicker("option", { 
    onClose: function(dateText, inst){console.log("Hello World");} 
}); 

Tabii bu daha önce belirlemiş olduğunuz önceki onClose işlevini geçersiz kılar. kaynak: jQuery forum post

0

Açma işlevinizi, başlangıç ​​seçeneklerinden yalnızca biri olarak tanımlayın. Bu benim için çalışıyor.

$('#date').datepicker({ 
    dateFormat: "dd/mm/yy", 
    onClose: function(dateText, inst){console.log("Hello World");} 
}); 
+0

Not başlatma sırasında: OP başlatmadan sonra yapmak ister (ör. usi ng [seçenek yöntemi] (http://api.jqueryui.com/datepicker/#method-option)). – ChrisW

0

Aynı zamanda, eski yakın işlevin yerini almasıyla aynı sorunla karşı karşıya kalıyordum. Çok aradıktan sonra ve bu sorunla başa çıkmak için kendi işlevlerimi uyguladım.

addCloseFunctionToDatePicker('myDatePicker', function(){ alert("I'm next method"); }); 
İlgili konular