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.


Reply via email to