This is purely JS problem.
I don't find anything in the web that can do this automatically for you.
Here is a possible solution:
store the previous selected value in a custom attribute, e.g.
data-prev-index=...
then in the precondition code replace attrs.event.preventDefault() with :
var $select = $('#'+attrs.c); $select[0].selectedIndex =
$select.data("prev-index");On Wed, Jul 24, 2013 at 2:10 PM, Marco Di Sabatino Di Diodoro < [email protected]> wrote: > Hi Martin, > > attrs.event.preventDefault() not work. My DropDownChoice changes always. > > M > > Il giorno 24/lug/2013, alle ore 10:59, Martin Grigorov < > [email protected]> ha scritto: > > > Hi, > > > > > > On Wed, Jul 24, 2013 at 11:54 AM, Marco Di Sabatino Di Diodoro < > > [email protected]> wrote: > > > >> Hi all, > >> > >> I like implement a DropDownChoice with an Confirm Dialog. > >> I used an AjaxFormComponentUpdatingBehavior("on change") to intercept > the > >> change in the DropDownChoice. > >> In addition, the user must first confirm the operation with a dialog > >> before changing the value in the DropDownChoice. > >> > >> To do that I add an AjaxCallListeners: > >> > >> @Override > >> protected void updateAjaxAttributes(final > >> AjaxRequestAttributes attributes) { > >> super.updateAjaxAttributes(attributes); > >> final AjaxCallListener ajaxCallListener = new > >> AjaxCallListener() { > >> private static final long serialVersionUID = > >> 7160235486520935153L; > >> > >> @Override > >> public CharSequence getPrecondition(final Component > >> component) { > >> return "if (confirm('" + > >> getString("confirmDelete") + "')) return false;"; > >> > > > > Try with: return "if (confirm('" + > getString("confirmDelete") + > > "')) { attrs.event.preventDefault(); return false;}"; > > > > The precondition just stops the Ajax call, but it has no logic to do > > anything else. > > > > > >> } > >> }; > >> attributes.getAjaxCallListeners().add(ajaxCallListener); > >> }}); > >> > >> When I click cancel on the Confirm Dialog, the DropDownChoice changes > and > >> I can not restore the old value. > >> How I understand that the user clicked on Cancel? Is the correct way to > >> implement this functionality? > >> > >> Best Regards > >> M > >> > >> -- > >> Dott. Marco Di Sabatino Di Diodoro > >> Tel. +39 3939065570 > >> > >> Tirasa S.r.l. > >> Viale D'Annunzio 267 - 65127 Pescara > >> Tel +39 0859116307 / FAX +39 0859111173 > >> http://www.tirasa.net > >> > >> Apache Syncope PMC Member > >> http://people.apache.org/~mdisabatino/ > >> > >> > > -- > Dott. Marco Di Sabatino Di Diodoro > Tel. +39 3939065570 > > Tirasa S.r.l. > Viale D'Annunzio 267 - 65127 Pescara > Tel +39 0859116307 / FAX +39 0859111173 > http://www.tirasa.net > > Apache Syncope PMC Member > http://people.apache.org/~mdisabatino/ > >
