i can't see any visual difference if i remove Event.stop(..).

I grad idea for code from some Tapestry standard component, may be
LinkSubmit or so. And i think it behave pretty standard.

On the other hand i've noticed that when i use it in 'select-all' mode,
where one checkbox sets all others (but not itself)  - it do not wait for
zone refresh.  Can it be some Prototype issue?


On Tue, Oct 19, 2010 at 10:33 PM, Andreas Andreou <andy...@di.uoa.gr> wrote:

> what happens if you omit
> Event.stop(event);
> in you onClick function ?
>
> On Tue, Oct 19, 2010 at 21:10, Dmitriy Vsekhvalnov
> <dvsekhval...@gmail.com> wrote:
> > Here you go. JS + Java.   Let me know if you find something in, which can
> > cause such behavior :)
> >
> > ============ JS ============
> > Tapestry.AjaxCheckbox = Class.create({
> >
> >    initialize: function(formId, clientId, selectAllMode, radioMode)
> >    {
> >        this.selectAllMode=selectAllMode;
> >        this.radioMode=radioMode;
> >        this.form = $(formId);
> >        this.element = $(clientId);
> >        //this.element.stopObserving("click",this.onClick);
> >        this.element.observe("click",
> > this.onClick.bindAsEventListener(this));
> >    },
> >
> >    createHidden : function()
> >    {
> >        var hidden = new Element("input", { "type":"hidden",
> >            "name": this.element.id + ":hidden",
> >            "value": this.element.id});
> >
> >        this.element.insert({after:hidden});
> >    },
> >
> >    onClick : function(event)
> >    {
> >        Event.stop(event);
> >
> >        if(this.radioMode=='true')
> >        {
> >            $$('input').each(function(e)
> >            {
> >              if(e.type=='checkbox')
> >              {
> >                  e.checked=0;
> >              }
> >             });
> >
> >            //set self
> >            this.element.checked=1;
> >        }
> >        else if(this.selectAllMode=='true')
> >        {
> >            this.form.getInputs('checkbox').each(function(e)
> >            {
> >                e.checked=1;
> >            });
> >
> >            //clean self
> >            this.element.checked=0;
> >        }
> >
> >
> >        var onsubmit = this.form.onsubmit;
> >        if (onsubmit == undefined || onsubmit.call(window.document,
> event))
> >        {
> >            this.createHidden();
> >            this.form.submit();
> >        }
> >    }
> > });
> >
> > Tapestry.Initializer.ajaxCheckbox = function(formId, clientId,
> > selectAllMode, radioMode)
> > {
> >    new Tapestry.AjaxCheckbox(formId, clientId, selectAllMode, radioMode);
> > }
> > ===========================
> >
> > ======= Java ===========
> > @IncludeJavaScriptLibrary("ajaxcheckbox.js")
> > public class AjaxCheckbox extends AbstractField
> > {
> >    @Parameter(required = false, autoconnect = false)
> >    private boolean value;
> >
> >    @Parameter(required = false)
> >    private boolean selectAllMode;
> >
> >    @Parameter(required = false)
> >    private boolean radioMode;
> >
> >    @Inject
> >    private RenderSupport renderSupport;
> >
> >    @Environmental
> >    private FormSupport formSupport;
> >
> >    @Inject
> >    private ComponentResources resources;
> >
> >    @Environmental
> >    private ValidationTracker tracker;
> >
> >    @Inject
> >    private Request request;
> >
> >    @BeginRender
> >    void begin(MarkupWriter writer)
> >    {
> >        String asSubmitted = tracker.getInput(this);
> >
> >        boolean checked = asSubmitted != null ?
> > Boolean.parseBoolean(asSubmitted) : value;
> >
> >        writer.element("input", "type", "checkbox",
> >                       "name", getControlName(),
> >                       "id", getClientId(),
> >                       "checked", checked ? "checked" : null);
> >
> >        resources.renderInformalParameters(writer);
> >
> >        //decorateInsideField();
> >    }
> >
> >    @AfterRender
> >    void after(MarkupWriter writer)
> >    {
> >        writer.end(); // input
> >
> >        renderSupport.addInit("ajaxCheckbox",
> >                              formSupport.getClientId(),
> >                              getClientId(),
> >                              valueOf(selectAllMode),
> >                              valueOf(radioMode));
> >    }
> >
> >    @Override
> >    protected void processSubmission(String elementName)
> >    {
> >        String postedValue = request.getParameter(elementName);
> >
> >        // record as "true" or "false"
> >
> >        tracker.recordInput(this, Boolean.toString(postedValue != null));
> >
> >        value = postedValue != null;
> >    }
> >
> > =======================
> >
> >
> >
> > On Tue, Oct 19, 2010 at 9:25 PM, Thiago H. de Paula Figueiredo <
> > thiag...@gmail.com> wrote:
> >
> >> On Tue, 19 Oct 2010 14:10:00 -0200, Dmitriy Vsekhvalnov <
> >> dvsekhval...@gmail.com> wrote:
> >>
> >>  Is it what AJAX stands for? :)
> >>>
> >>
> >> Yes! :)
> >>
> >>
> >>  i was thinking that ajax is to do things in background, while letting
> user
> >>> see something immediately. And i don't think checkbox falls to area
> where it
> >>> should get response from server to display new state, isn't it?
> >>> anyway you can try it yourself and see that it is CHANGED but then
> >>> restored back when sending form data.
> >>>
> >>
> >> Please post your JavaScript code. It doesn't seem related to Tapestry.
> >>
> >> --
> >> Thiago H. de Paula Figueiredo
> >> Independent Java, Apache Tapestry 5 and Hibernate consultant, developer,
> >> and instructor
> >> Owner, Ars Machina Tecnologia da Informação Ltda.
> >> http://www.arsmachina.com.br
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> >> For additional commands, e-mail: users-h...@tapestry.apache.org
> >>
> >>
> >
>
>
>
> --
> Andreas Andreou - andy...@apache.org - http://blog.andyhot.gr
> Tapestry PMC / Tacos developer
> Open Source / JEE Consulting
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
>
>

Reply via email to