[{"data":1,"prerenderedAt":304},["ShallowReactive",2],{"project-3121374":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":34,"aspects":35,"strip":40,"post_text":42,"what":43,"said":58,"maker_in_thread":170,"shape":180,"grid":185,"attempts":267,"same_week":268,"maker_shows":212,"maker_hidden":296,"reader_version":297,"card":298},"3121374","validate.js","lightweight JavaScript form validation library","title","Show HN: validate.js - lightweight JavaScript form validation library","http:\u002F\u002Frickharrison.github.com\u002Fvalidate.js\u002F","rickharrison.github.com","rickharrison",1318871500,2011,102,32,100,1097,10,"notable","languages","javascript form validation library","library",[24,25,26,27],"javascript form validation","client-side validation","form validator library","validation rules","curious",-0.086,{"positive":31,"neutral":18,"mixed":32,"critical":33},2,1,3,16,{"docs":36,"idea":38,"design":39},{"positive":37,"critical":32},0,{"positive":32,"critical":32},{"positive":37,"critical":37},[37,37,33,37,37,37,37,33,37,33,33,32,41,37,33,33,33,37,33,37,33,37,33,41,37,37,33,37,37,32,37,32],5,null,{"problem":44,"audience":42,"pricing":42,"motivation":42,"time_to_build":42,"stack":50,"openness":55,"stage":56,"team_size":57},{"value":45,"source":46,"evidence":47},"Validating form input in the browser with a lightweight library","maker",[48],{"id":49},"post",[51],{"value":52,"source":46,"evidence":53},"JavaScript",[54],{"id":49},"open_source","beta","unknown",{"praise":59,"objections":75,"requests":90,"questions":129,"alternatives":144},[60,68],{"value":61,"source":62,"evidence":63},"Simple utility libraries like this help sites when many people contribute","commenter",[64],{"id":65,"by":66,"text":67},"3121708","miles_matthias","I really like seeing simple utility libraries like this be posted on github. It makes everyone's sites better when a lot of people contribute to a good library. Nice job, and…",{"value":69,"source":62,"evidence":70},"Non-jQuery solution that is lightweight",[71],{"id":72,"by":73,"text":74},"3122714","FuzzyDunlop","It gets a +1 for being a non-jquery solution (jquery's fine for abstracting the DOM for animation and UX niceties, but you don't need to include what adds up to 2000 lines of…",[76,83],{"value":77,"source":62,"evidence":78},"Client-side validation cannot be trusted; server-side checks are still needed",[79],{"id":80,"by":81,"text":82},"3121516","kgtm","While client-side validation provides a possibly snappier user experience, developers should constantly be reminded that the client cannot be trusted. Data integrity checks and…",{"value":84,"source":62,"evidence":85},"Name clashes with several other libraries named validate.js",[86],{"id":87,"by":88,"text":89},"3121574","alttag","I've seen several projects named \"validate.js\". May I suggest coming up with a different name to let devs know which of the several libraries by that name they're working with?…",[91,102,109,116,122],{"value":92,"source":62,"evidence":93},"Inline validation support",[94,98],{"id":95,"by":96,"text":97},"3121484","kornork","Interesting... is inline validation an option on this?",{"id":99,"by":100,"text":101},"3121582","neovive","Inline, instant validation would make this very useful as a compliment to full server-side validation. I agree that client-side validation can significantly improve the ux for…",{"value":103,"source":62,"evidence":104},"HTML5 attribute support (required, pattern, min, max)",[105],{"id":106,"by":107,"text":108},"3121715","rimantas","No support for HTML5? (by that I mean support for \"required\", \"pattern\", \"min\", \"max\" attributes).",{"value":110,"source":62,"evidence":111},"Regex and rule parameters instead of callback registration",[112],{"id":113,"by":114,"text":115},"3121730","oinksoft","I think you should have params to the validators, specifically for the regex case, in which the callback_ approach, with registration and such, is quite onerous. ``` { rules:…",{"value":117,"source":46,"evidence":118},"Server-side JavaScript support for shared validation",[119],{"id":120,"by":11,"text":121},"3121756","I will be adding server-side js support, so this will be a definite use case.",{"value":123,"source":62,"evidence":124},"Highlight invalid fields",[125],{"id":126,"by":127,"text":128},"3122412","nikkaelle","I feel that the individual fields that have errors should be highlighted. While it's useful to say \"The password field is required.\" at the top, it's more obvious to the user…",[130,137],{"value":131,"source":62,"evidence":132},"How does it compare to jQuery validate?",[133],{"id":134,"by":135,"text":136},"3121774","y0ghur7_xxx","How does this compare to jQuery validate¹? I use that a lot and it works great. Did you write this because you didn't wart the dependency with jQuery?…",{"value":138,"source":62,"evidence":139},"Is documentation available on using it with server-side validation?",[140],{"id":141,"by":142,"text":143},"3121550","btucker","It would also be cool if there was some documentation on how you might use validate.js in concert with server-side validations.",[145,149,156,163],{"value":146,"source":62,"evidence":147},"jQuery validate",[148],{"id":134,"by":135,"text":136},{"value":150,"source":62,"evidence":151},"Salid jQuery form validator",[152],{"id":153,"by":154,"text":155},"3122029","jqueryin","While we're on the topic of lightweight JS validation libraries, I released my own and have used it for well over a year on a number of production sites. It's quite feature rich…",{"value":157,"source":62,"evidence":158},"LiveValidation",[159],{"id":160,"by":161,"text":162},"3122490","ams6110","I like LiveValidation http:\u002F\u002Flivevalidation.com\u002F",{"value":164,"source":62,"evidence":165},"jQuery Validation Engine",[166],{"id":167,"by":168,"text":169},"3122553","posabsolute","There is also the validationEngine ! not that i'm a developer on it https:\u002F\u002Fgithub.com\u002Fposabsolute\u002FjQuery-Validation-Engine",{"comments":171,"answered":31,"key":172},8,[173,176,177],{"id":174,"text":175},"3121527","I completely agree. I will probably add a note in the docs to remind people that you should always still perform server side checks.",{"id":120,"text":121},{"id":178,"text":179},"3121743","Thanks :) I look forward to more pull requests coming in.",{"commenters":181,"max_depth":182,"maker_replies":171,"first_comment_mins":183,"lifespan_hours":184},25,6,24,12,[186,188,190,192,195,198,200,203,205,207,209,211,214,216,218,221,225,226,229,231,233,236,239,240,242,243,245,249,252,256,261,263],[80,37,37,187,81,37],"commenter\u002Fneutral\u002Fidea",[174,37,37,189,11,32],"maker\u002Fpositive\u002Fdocs",[141,37,33,191,142,37],"project\u002Fneutral\u002Fdocs",[193,37,37,187,194,37],"3121620","javanix",[196,37,37,187,197,37],"3121659","aaronblohowiak",[120,37,37,199,11,32],"maker\u002Fneutral\u002Fidea",[201,37,37,187,202,37],"3123453","hackernews",[134,32,33,204,135,37],"project\u002Fneutral\u002Fidea",[153,31,37,206,154,37],"other\u002Fcritical\u002Fidea",[126,33,33,208,127,37],"project\u002Fneutral\u002Fdesign",[72,33,33,210,73,37],"project\u002Fmixed\u002Fdesign",[87,212,32,213,88,37],4,"project\u002Fcritical\u002Fnone",[65,41,41,215,66,37],"maker\u002Fpositive\u002Fnone",[178,41,37,217,11,32],"maker\u002Fneutral\u002Fnone",[219,182,33,204,220,37],"3123965","cdsanchez",[222,223,33,204,224,37],"3121754",7,"alexyoung",[113,171,33,208,114,37],[227,171,37,228,11,32],"3121739","maker\u002Fpositive\u002Fdesign",[106,230,33,204,107,37],9,[232,230,37,217,11,32],"3121726",[234,18,33,204,235,37],"3121716","przemoc",[167,237,37,238,168,37],11,"other\u002Fneutral\u002Fnone",[95,184,33,204,96,37],[99,184,41,241,100,37],"project\u002Fpositive\u002Fidea",[160,184,37,238,161,37],[244,184,37,199,11,32],"3121586",[246,247,33,208,248,37],"3121494",13,"LeafStorm",[250,247,37,251,11,32],"3121637","maker\u002Fneutral\u002Fdesign",[253,254,37,238,255,37],"3121793",14,"tomelders",[257,258,32,259,260,37],"3121478",15,"project\u002Fcritical\u002Fdocs","ceejayoz",[262,258,37,189,11,32],"3121506",[264,34,32,265,266,37],"3122518","project\u002Fcritical\u002Fidea","skeptical",[],[269,274,279,284,287,291],{"id":270,"name":271,"points":272,"category":273},"3117695","hnwho",193,"consumer_social",{"id":275,"name":276,"points":277,"category":278},"3115086","Dive Into iOS",163,"learning_science",{"id":280,"name":281,"points":282,"category":283},"3109779","TimeKiwi",145,"productivity",{"id":285,"name":286,"points":14,"category":283},"3125833","TouchBase",{"id":288,"name":289,"points":290,"category":278},"3130554","BackboneScreencasts.com",77,{"id":292,"name":293,"points":294,"category":295},"3127507","Leftronic",49,"web_saas",false,"v2",{"id":299,"name":5,"line":6,"ai":296,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":300,"top":18,"kw":301,"maker":11,"domain":10,"tier":19,"attempts":37,"strip":302,"url":9,"mix":303,"praise":61,"objection":77,"sub":21},3121374,-0.09,[24,25,26,27],"00300003033150333030303500300101",[31,18,32,33],1794036490970]