We had further variations on this, but I thought I'd see how I'd go at implementing this in the APEX environment.
Update - included
.change() to invoke triggerhttp://stackoverflow.com/questions/8437125/jquery-invoke-change-without-user-action-but-by-val-change
First, well, second after creating some date fields on my page - I defined a dynamic action "t in date"
Event: Key release
Selection type: jQuery Selector
jQuery Selector: .hasDatepicker -- this is a class automatically assigned to my dates, found simply with right-click -> Inspect element in Chrome
Condition: equal to
Value: t![]() |
| Dynamic Action definition |
$(this.triggeringElement).val(return_date('-')).change();In my case I used a function to return a date formatted nicely for my Oracle environment - more details below.
Don't fire on page load, and set "Selection Type" to "Triggering Element"
![]() |
| JavaScript action |
I also added a parameter so I could define another DA that accepts "y" for yesterday - and adjust my call to
return_date('-',-1)function return_date(p_delimiter, p_offset) {
/* with help from
https://forums.oracle.com/forums/thread.jspa?threadID=2186734
http://stackoverflow.com/questions/894860/set-a-default-parameter-value-for-a-javascript-function
*/
/* Default delimiter to . */
p_delimiter = typeof p_delimiter !== 'undefined' ? p_delimiter : '.';
p_offset = typeof p_offset !== 'undefined' ? p_offset : 0;
/* Create date object */
var myDate = new Date(Date.now());
myDate.setDate(myDate.getDate()+p_offset);
/* Create output string DD.MM.YYYY */
/* Day */
var myStr = (myDate.getDate() < 10 ? "0" + myDate.getDate().toString() : myDate.getDate().toString()) + p_delimiter;
/* Month */
myStr = myStr + (myDate.getMonth()+1 < 10 ? "0" + (myDate.getMonth()+1).toString() : (myDate.getMonth()+1).toString()) + p_delimiter;
/* Year */
myStr = myStr + myDate.getFullYear().toString();
/* Set value */
return myStr;
}
Note how much more difficult it seems to default parameters in JavaScript compared to PL/SQL.What do you think? The only problem I've found is if you tab quick enough after typing "t", the trigger does not fire.
Oh, and IE8 seems to have a problem with the date constructor - but I've all but lost my patience pandering to IE.
An example can be found here:
http://apex.oracle.com/pls/apex/f?p=SWESLEY_FORUM:6:0::NO::P6_MODE:E
Scott


1 comment:
This is a nice one. I have not tried this but marking it so that I can do it by this week
Post a Comment