From f9b1a5a8add03058c3da7a32470f6bee2deebce3 Mon Sep 17 00:00:00 2001 From: Erik Amaru Ortiz Date: Fri, 24 Dec 2010 13:38:03 +0000 Subject: [PATCH] fix for enable the onchange event in the new calendar widget --- gulliver/js/common/core/common.js | 27 ++++++++++++++++++++++++++- gulliver/system/class.xmlform.php | 19 +++++++++++++------ 2 files changed, 39 insertions(+), 7 deletions(-) diff --git a/gulliver/js/common/core/common.js b/gulliver/js/common/core/common.js index 5d96c1a85..f7ec14964 100755 --- a/gulliver/js/common/core/common.js +++ b/gulliver/js/common/core/common.js @@ -1859,7 +1859,17 @@ function datePicker4(obj, id, mask, startDate, endDate, showTIme){ animation: _BROWSER.name =='msie'? false: true, showTime: showTIme, opacity: 1, - onSelect: function() { this.hide(); }} + onSelect: function() { + this.hide(); + + fireEvent(document.getElementById(id),'change'); + + + //if(document.getElementById(id).onchange) + //document.getElementById(id).onchange(); + } + +} ); if( _BROWSER.name != 'msie' ) @@ -1867,6 +1877,21 @@ function datePicker4(obj, id, mask, startDate, endDate, showTIme){ } +function fireEvent(element,event){ + if (document.createEventObject){ + // dispatch for IE + var evt = document.createEventObject(); + return element.fireEvent('on'+event,evt) + } + else{ + // dispatch for firefox + others + var evt = document.createEvent("HTMLEvents"); + evt.initEvent(event, true, true ); // event type,bubbling,cancelable + return !element.dispatchEvent(evt); + } +} + + function elementAttributesNS(e, ns) { if (!this.__namespaceRegexps) this.__namespaceRegexps = {}; diff --git a/gulliver/system/class.xmlform.php b/gulliver/system/class.xmlform.php index 3cd0fd75f..18426a619 100644 --- a/gulliver/system/class.xmlform.php +++ b/gulliver/system/class.xmlform.php @@ -2914,6 +2914,7 @@ class XmlForm_Field_Date extends XmlForm_Field_SimpleText public $dependentFields = ''; public $editable; var $hint; + var $onchange; /** * Verify the format of a date * @param $date @@ -3120,6 +3121,12 @@ class XmlForm_Field_Date extends XmlForm_Field_SimpleText } } + //onchange + if( isset($this->onchange) && $this->onchange != '' ) + $onchange = 'onchange="'.$this->onchange.'"'; + else + $onchange = ''; + #the validations field was moved to javascript routines ;) if ($this->mode == 'edit') { if( $startDate=='1969-12-31' ) { @@ -3140,13 +3147,13 @@ class XmlForm_Field_Date extends XmlForm_Field_SimpleText $sizeend = $maskleng + 2; } if ( $this->editable != "0") { - $html = ' - - '; + $html = ' + + '; } else { - $html = ' - - '; + $html = ' + + '; } } else {