Hmm, so you can't use the AutoComplete widget as part of a form if you want it to work if some weirdo comes along who has javascript disabled?
On Jan 14, 4:15 pm, Mads Hartmann <[email protected]> wrote: > Aha! There's no function bound to the keyUp event, so the hidden field > doesn't update :) > > On Jan 14, 4:06 pm, Mads Hartmann <[email protected]> wrote: > > > > > Hello, > > I've got a problem when using the AutoComplete widget. > > > ---------------- > > Problem > > ---------------- > > I've got three fields which are all autocomplete fields. When i submit > > the form I check if the three fields aren't blank and have different > > values > > > If i deliberately enter the same value in field 1 and 3, lets say > > "wordpress" it display an error message (S.error("")), which is what i > > intended. The problem arises when i manually edit the field to lets > > say 'wordpress2' and hit submit - the validation fails because it > > didn't update the variable properly in my snippet. The weird thing is > > that it updates the variable if i pick a value from the autocompletion > > list it. > > > ---------------- > > Information > > ---------------- > > Version: 2.0-M1 > > > ---------------- > > file > > ---------------- > > package scalableKvidr.snippet > > > import xml.{Text, NodeSeq} > > import _root_.net.liftweb.util.Helpers._ > > import _root_.net.liftweb.mapper._ > > import net.liftweb.http.S._ > > import net.liftweb.http.SHtml._ > > > //import scalableKvidr.lib.{MyAutoComplete => AutoComplete} > > import scalableKvidr.model.{Tag} > > import net.liftweb.http.{S, RequestVar} > > import scala.util.regexp > > import _root_.net.liftweb.widgets.autocomplete._ > > > /** > > * Created by TextMate. > > * User: Mads > > * Date: Jan 13, 2010 > > * Time: 7:52:22 PM > > * To change this template use File | Settings | File Templates. > > */ > > > class SignUp { > > > def pickTags(xhtml: NodeSeq) :NodeSeq = { > > > val myoptions: List[Pair[String,String]] = ("width","300") :: Nil > > > object username extends RequestVar("Mads") // will fetch from > > twitter > > object imagelink extends RequestVar("http://a1.twimg.com/ > > profile_images/446431308/IMGP0648_bigger.jpg") // will fetch from > > twitter > > object message extends RequestVar("Jeg har lige oprettet mig > > selv > > i det danske twitter-indekshttp://kvidr.dkunderkategorierne:") > > object email extends RequestVar("Email") > > object joinNewsletter extends RequestVar(true) > > object followKivdr extends RequestVar(true) > > object tag1 extends RequestVar("") > > object tag2 extends RequestVar("") > > object tag3 extends RequestVar("") > > > var emailClass = if(joinNewsletter) "email" else "email > > disabled" > > > def processUser() { > > val emailRegxp = """([\w-\.]+)@((?:[\w]+\.)+)([a-zA-Z] > > {2,4})""".r // creates a regexp > > var containErrors = false > > > // validations > > if ( List(tag1.is,tag2.is,tag3.is).filter(_.length > > > 0).removeDuplicates.size != 3 ) { > > containErrors = true > > S.error("Du skal vælge 3 unikke tags") > > } > > if ( joinNewsletter && > > emailRegxp.findFirstMatchIn(email.is) == > > None ){ > > containErrors = true > > S.error("Den indtastede email er ugyldig") > > } > > if (!containErrors) { > > println("message: " + message + " email: " > > + email) > > S.notice("Tillykke, du er nu oprettet under > > kategorierne: " + > > tag1.is + ", " + tag2.is + ", " + tag3.is) > > redirectTo("/tilmeld/nybruger/" + tag1.is + > > "/" + tag2.is + "/" + > > tag3.is) > > } > > } > > > def autoCompleteData(current: String, limit: Int) :Seq[String] = > > { > > Tag.findAll(Like(Tag.tag, current+"%")).map{ tag :Tag => > > tag.tag.is} > > } > > > bind("user", xhtml, > > "twitter_username" -> Text(username), > > AttrBindParam("imagelink",Text(imagelink),"src"), > > "tag1" -> AutoComplete(tag1.is,autoCompleteData > > (_,_), (input: String) => { tag1(input); println(tag1+","+input) }/*, > > myoptions ::: List(("inputClass","'tag first-tag'"))*/), > > "tag2" -> AutoComplete(tag2.is,autoCompleteData > > (_,_), (input: String) => { tag2(input); println(tag2+","+input) }/*, > > myoptions ::: List(("inputClass","'tag'"))*/), > > "tag3" -> AutoComplete(tag3.is,autoCompleteData > > (_,_), (input: String) => { tag3(input); println(tag3+","+input ) }/*, > > myoptions ::: List(("inputClass", "'tag'"))*/), > > "message" -> textarea(message.is, message(_)) % > > ("id" -> "message"), > > "email" -> text(email.is, email(_)) % ("class" -> > > emailClass) % ("disabled" -> (!joinNewsletter.is).toString), > > "newsletter" -> checkbox(joinNewsletter.is, > > joinNewsletter(_), ("class" -> "email-checkbox")), > > "followkvidr" -> checkbox(followKivdr.is, followKivdr > > (_), ("class" -> "follow-kvidr-checkbox")), > > "submit" -> submit("Jeg er klar - tilmeld", > > processUser )) > > > } > > > } > > > Thanks :) > > Mads Hartmann Jensen
-- 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.
