You should be using the on function instead of bind, in jquery 1.7+
On Sep 17, 2012 5:41 AM, "Taha Siddiqi" <[email protected]> wrote:
> Hi
>
> You are using tapestry-jquery and trying to access a prototype library
> method. Try bind instead of observe
>
> regards
> Taha
>
> On Sep 17, 2012, at 4:00 PM, ZKN __ wrote:
>
> >
> > Thank you!
> > I tried to implement this but not much success for now. I'm not really
> good at js and jQuery so perhaps I'm doing something wrong.
> > Here is my code
> > initialize: function(element)
> >
> > {
> >
> >
> > var el = $(element);
> >
> >
> > var form = jQuery(el).closest("form");
> form.observe(Tapestry.FORM_VALIDATE_EVENT,
> > function()
> > {
> > console.log("Hey, we're
> observing!");
> >
> > ...
> > I get the following error: Uncaught exception: TypeError: 'form.observe'
> is not a function
> >
> > I have to mention I'm on a bit older version of Tapestry: 5.1.05. There
> is no
> > Tapestry.FORM_VALIDATE_FIELDS_EVENT defined but there are
> > Tapestry.FORM_VALIDATE_EVENT and
> > Tapestry.FIELD_VALIDATE_EVENT
> > which I guess should do the same thing.
> >
> >
> >
> >
> >
> >
> > -------- Оригинално писмо --------
> >
> > От: Josh Canfield [email protected]
> >
> > Относно: Re: Confirm mixin with form validation errors
> >
> > До: Tapestry users
> >
> > Изпратено на: Петък, 2012, Септември 14 07:07:20 EEST
> >
> >
> > I don't think this addresses the problem though, right?
> >
> >
> >
> > If client-side form validation fails you still are in a state where you
> >
> > can't click the submit button again after fixing the error.
> >
> >
> >
> > Tapestry doesn't have an event for "validation failed", and I don't know
> of
> >
> > an approved way to workaround that. But! What you can do is add an
> observer
> >
> > for Tapestry.FORM_VALIDATE_FIELDS_EVENT and set a timeout (1/4 of a
> >
> > second?) to re-enable the field if you don't get a
> >
> > Tapestry.FORM_PREPARE_FOR_SUBMIT_EVENT before the timeout.
> >
> >
> >
> > Here is a prototype based on Geoff's example from jumpstart. This was
> >
> > created for submit buttons, you'd have to adjust for links (find the
> >
> > form...)
> >
> >
> >
> > ClickOnce = Class.create( {
> >
> >
> >
> > initialize: function(elementId) {
> >
> > var el = $(elementId);
> >
> > el.clickOnce = this;
> >
> > if ( el['form'] ) {
> >
> > el.form.observe(Tapestry.FORM_VALIDATE_FIELDS_EVENT,
> function()
> >
> > {
> >
> > console.log("Hey, we're observing!");
> >
> > el.clickOnce.clickOnceTimeout =
> >
> > window.setTimeout(function(){
> >
> > console.log("Let them click again")
> >
> > el.clickOnce.alreadyClickedOnce = false;
> >
> > }, 250)
> >
> > });
> >
> >
> >
> > el.form.observe(Tapestry.FORM_PREPARE_FOR_SUBMIT_EVENT,
> >
> > function() {
> >
> > window.clearTimeout(el.clickOnce.clickOnceTimeout);
> >
> > });
> >
> > }
> >
> > this.alreadyClickedOnce = false;
> >
> >
> >
> > Event.observe(el, 'click',
> >
> > this.doClickOnce.bindAsEventListener(this));
> >
> > },
> >
> >
> >
> > doClickOnce: function(e) {
> >
> > var element = Event.element(event);
> >
> > console.log("Clicked");
> >
> > if (element.clickOnce.alreadyClickedOnce) {
> >
> > console.log("and cancelled");
> >
> > e.stop();
> >
> > }
> >
> > element.clickOnce.alreadyClickedOnce = true;
> >
> > }
> >
> >
> >
> > } );
> >
> >
> >
> >
> >
> > // Extend the Tapestry.Initializer with a static method that
> instantiates a
> >
> > ClickOnce.
> >
> >
> >
> > Tapestry.Initializer.clickOnce = function(spec) {
> >
> > new ClickOnce(spec.elementId);
> >
> > };
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>