2012-02-16 38 views
3

我使用joomla日曆來選擇日期。下面顯示了它的html代碼。這裏當你點擊圖片時,日曆會彈出,你可以選擇一個日期並彈出關閉,日期值顯示在輸入文本字段中。我想要的是如果日期發生變化,我想寫一個函數來執行ajax post(輸入文本更改)。我嘗試了簡單的alert(),但沒有工作。我認爲這是由於在文本字段上失去焦點,因爲只有我們點擊的圖像,沒有用鼠標或任何按鍵輸入字段的聯繫。 PLZ幫助我解決這個問題。捕捉輸入字段中的文本更改

$("#select_date").change(function(){ 
    alert('Working'); 
}); 

HTML代碼

<input id="select_date" type="text" value="2012-02-16" name="select_date" title="Thursday, 16 February 2012"> 
<img id="select_date_img" class="calendar" alt="Calendar" src="/eap_movies/media/system/images/calendar.png"> 

PHP代碼

JHTML::_('behavior.calendar'); 
JHTML::calendar(date('Y-m-d'),'select_date', 'select_date', '%Y-%m-%d'); 
+2

日曆控件是否有回調,您可以在選擇日期時使用回調? – 2012-02-16 10:36:49

回答

2

Mihai Bazon's DHTML Calendar v1.0(下/media/system/js/calendar.js)onSelectedonClose事件的回調。所以應該可以在日曆關閉時或用戶選擇日期時捕捉。

解決方案1 ​​ - 編輯的Joomla

第1步 - 你需要重寫此文件:libraries/joomla/html/html.php

// added $onSelected parameter 
public static function calendar($value, $name, $id, $format = '%Y-%m-%d', $attribs = null, $onSelected) 
{ 
    ... 
$document->addScriptDeclaration('window.addEvent(\'domready\', function() {Calendar.setup({ 
      inputField: "'.$id.'",   // id of the input field 
      ifFormat: "'.$format.'",  // format of the input field 
      button: "'.$id.'_img",   // trigger for the calendar (button ID) 
      align: "Tl",       // alignment (defaults to "Bl") 
      singleClick: true, 
      onSelected: '.$onSelected.' 
});});'); 
... 
} 

第2步 - 定義回調onSelected

JHTML::_('behavior.calendar'); 
JHTML::calendar(date('Y-m-d'),'select_date', 'select_date', '%Y-%m-%d', null, 'userSelectedDate'); 

第3步 - 實施回撥

function userSelectedDate(calendar, date){ ... } 

注意:我沒有Joomla的活動安裝,所以上面的代碼可能有語法錯誤。

解決方案2 - 薩拉的簡單的解決方案

添加onchange定義的JHTML::calendar$attribs參數:

JHTML::calendar(date('Y-m-d'),'select_date', 'select_date', '%Y-%m-%d','onchange="myfunction();"');

訪問DHTML Calendar Website爲好。

+3

好主意!!!我沒有看到http://docs.joomla.org/API16:JHtml/calendar現在我通過了html屬性。 'JHTML :: calendar(date('Ym-d'),'select_date','select_date','%Y-%m-%d','onchange =「myfunction();」');' 。 – Sara 2012-02-16 11:25:04

+2

那一個肯定比較容易:) – papaiatis 2012-02-16 12:26:08

2

變化將觸發事件只有當輸入寬鬆焦點(模糊)。

如果可能,您可以觀察按鍵,按鍵或按鍵事件,或者在選取日期時觸發事件。

1

你使用哪個版本的jquery? 我有同樣的問題,我和

$('elementName').on("input propertychange",function() { 
alert("detected"); 
}); 

就因爲與KEYUP事件工作會在你的情況下不能工作,因爲存在與實際現場沒有用戶交互。

+0

jQuery ver。1.7 – Sara 2012-02-16 10:43:24