Hmm. Crap. Damn that IE.
Well, I have something working in Firefox on Mac for the button. It's
probably more complicated than it needs to be...
def ajaxRemove(name: String,
func: AFuncHolder,
attrs: Tuple2[String, String]*): Elem = {
val funcName = mapFunc(func)
(<input type="button"/>) %
("value" -> name) %
("onclick" -> (makeAjaxCall(JsRaw("'" +
funcName+"='+this.checked")) + "; return false")) %
("class" -> "removeButton") %
getAttrs(attrs: _*)
}
Then:
<td class="button">{FH.ajaxRemove("-",
() => {
val x = Model.getReference[X](classOf[X], tp.id)
survey.technicalPotentials.remove(x)
Model.merge(survey)
Model.remove(x)
Model.flush()
Run("$('#tp" + tp.id.toString + "').hide().remove();")
})}</td>
#tp + tp.id.toString is the id of the <tr> attribute.
I'll crank up the virtual machine and test it in IE.
Thanks for looking at this.
I could conceivably hide the row and delete all the individual inputs
(or maybe just hide the row), but that seems pretty kludgy.
Chas.
David Pollak wrote:
> Charles,
>
> If you're planning to deploy this app in IE, you may have an issue. My
> experience with IE is that adding/removing <tr> doesn't always work
> well. :-(
>
> What is most likely happening is that your button is inside a form. It
> turns out that there's a race condition where sometimes the
> XmlHttpRequest will get fired first and sometimes the form will be
> submitted first.
>
> Lemme see if I can do something fancy with returning false from the
> button ajax request to the event doesn't bubble up.
>
> Thanks,
>
> David
>
> On Mon, Dec 1, 2008 at 1:08 PM, Charles F. Munat <[EMAIL PROTECTED]
> <mailto:[EMAIL PROTECTED]>> wrote:
>
>
> I have a table in which each row represents an object in the database,
> with each cell in the row an input bound to an attribute of the object.
> I want to be able to add rows (with new, blank objects) and delete rows
> (deleting both the row on the page and the associated object in the
> database).
>
> I've set up a snippet method to insert a new row. It returns the table
> row with all the inputs nicely bound. How do I call this with AJAX and
> insert the NodeSeq into the current table?
>
> At the end of the row I have a [-] ajaxButton. It should delete that row
> and the associated object using AJAX, but when I click it, the page
> reloads and nothing changes.
>
> I've looked through the jQuery Lift stuff. Am I using the ajaxButton
> wrong? Why would the page reload? And what methods are appropriate to
> both updating an object (Model.remove(obj)) and deleting the row
> ($('#rowid').remove())?
>
> Any help appreciated.
>
> Chas.
>
>
>
>
>
> --
> Lift, the simply functional web framework http://liftweb.net
> Collaborative Task Management http://much4.us
> Follow me: http://twitter.com/dpp
> Git some: http://github.com/dpp
>
> >
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---