OK, thanks for checking back...

Snippet:
swappable(<span class='dueon'>{task.dueOn.toString}</span>,
              <span class='chgDueon'>{ajaxText(task.dueOn.toString,
                  v => { task.dueOn(v.toLong).save; reDrawTasks();
                  }) % ("size" -> "10")}</span>)

JS:
$chgDueon // jQuery selection for text field
    .datepicker({dateFormat:'m-d-yy', minDate: +1})
    .blur(function(){$chgDueon.val(parseDate($chgDueon.val()));});
// works well to pick a new date and change it to millis for save

Emitted XHTML:
<span>
   <span class="dueon" id="F111290299287IBE"
       onclick="jQuery('#'+'F111290299287IBE').hide();
          jQuery('#'+'F1112902992880KN').show().each(function(i) {
              var t = this; setTimeout(function() { t.focus(); },
200);});return false;;">
       1248493271843</span>
   <span style="display: none" id="F1112902992880KN"
      onblur="jQuery('#'+'F111290299287IBE').show();
          jQuery('#'+'F1112902992880KN').hide();">
      <input onblur="lift_ajaxHandler('F111290299286DL1=' +
         encodeURIComponent(this.value), null, null)"
         type="text" value="1248493271843"
         onkeypress="lift_blurIfReturn(event)" size="10" />
    </span>
</span>

So, all the parts work well together, but Lift's ajax just takes off
too quickly, and cannot read the new value.


On Aug 16, 11:02 pm, "marius d." <[email protected]> wrote:
> You can probably use this definition of ajaxText:
>
> def ajaxText(value: String, jsFunc: Call, func: String => JsCmd)
>
> See the jsFunc parameter. Essentially you are specifying your function
> call that may have one parameter. To your parameter list List we'll
> add a new parameter which is the ajax invocation function. In other
> words your code gets that function that does the ajax call meaning
> that you have the control over when the ajax call is made.
>
> Br's,
> Marius
>
> On Aug 17, 8:55 am, "marius d." <[email protected]> wrote:
>
> > Would you please post a code snippet with what you're doing? (a
> > minimalistic example)
>
> > Br's,
> > Marius
>
> > On Aug 17, 7:41 am, g-man <[email protected]> wrote:
>
> > > I am moving nicely with my 'save all dates as millis and let the
> > > client localize for display' project, learning while enhancing the
> > > ToDo sample app.
>
> > > I have added a 'dueOn' field, and that is displayed as swappable
> > > ajaxText, similar to the other fields in the tutorial.
>
> > > I have enabled datepicker for the ajaxText field via jQuery, and have
> > > a parsing function attached an event listener, so when datepicker
> > > finishes, the date is converted to millis, ready for Lift to send back
> > > to the server and save.
>
> > > So far, all good.
>
> > > The problem is that Lift's ajax starts ('onblur') before it has a
> > > chance to see the new date value, so the new value is never saved.
>
> > > What I need is a way to tell Lift to wait until after my parser has
> > > had a chance to write the changed value.
>
> > > I like the ajax style, so I don't want to make a 'submit' form, and
> > > 'onchange' won't do it either, because the value is actually changed
> > > twice (once to a formatted date, once to millis).
>
> > > What I need is some way to say, 'OK to start ajax now'!
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to