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