{"action":"opened","issue":{"url":"https://api.github.com/repos/mozilla/teach.webmaker.org/issues/670","labels_url":"https://api.github.com/repos/mozilla/teach.webmaker.org/issues/670/labels{/name}","comments_url":"https://api.github.com/repos/mozilla/teach.webmaker.org/issues/670/comments","events_url":"https://api.github.com/repos/mozilla/teach.webmaker.org/issues/670/events","html_url":"https://github.com/mozilla/teach.webmaker.org/issues/670","id":67798688,"number":670,"title":"Use a form validation library","user":{"login":"toolness","id":124687,"avatar_url":"https://avatars.githubusercontent.com/u/124687?v=3","gravatar_id":"","url":"https://api.github.com/users/toolness","html_url":"https://github.com/toolness","followers_url":"https://api.github.com/users/toolness/followers","following_url":"https://api.github.com/users/toolness/following{/other_user}","gists_url":"https://api.github.com/users/toolness/gists{/gist_id}","starred_url":"https://api.github.com/users/toolness/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/toolness/subscriptions","organizations_url":"https://api.github.com/users/toolness/orgs","repos_url":"https://api.github.com/users/toolness/repos","events_url":"https://api.github.com/users/toolness/events{/privacy}","received_events_url":"https://api.github.com/users/toolness/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/mozilla/teach.webmaker.org/labels/grooming","name":"grooming","color":"f7c6c7"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-04-11T15:21:52Z","updated_at":"2015-04-11T15:21:52Z","closed_at":null,"body":"As @mmmavis discovered in https://github.com/mozilla/teach.webmaker.org/issues/481#issuecomment-91397570, we are not currently using a form validation library, but instead doing validation in a somewhat ad hoc way by combining HTML5 form validation with kind of [janky fallbacks](https://github.com/mozilla/teach.webmaker.org/pull/593). There are also some things we have yet to validate, like #424.\r\n\r\nIt might be a good idea for us to revisit this during GROOMING and consider using a real form validation library that is compatible with React and offers a better user experience.\r\n\r\nI also have some thoughts on making our forms work for folks who aren't on JS-enabled browsers, e.g. so they work using standard GET/POST, but this will mean having form validation code that works on both the server and client.\r\n\r\n@mmmavis, if you have experience with any validation libraries that you find particularly awesome, feel free to mention them here!"}}