index.html 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Remember The Milk signup form - jQuery Validate plugin demo - with friendly permission from the RTM team</title>
  6. <link rel="stylesheet" href="milk.css">
  7. <script src="../../lib/jquery.js"></script>
  8. <script src="../../lib/jquery.mockjax.js"></script>
  9. <script src="../../dist/jquery.validate.js"></script>
  10. <script>
  11. $(document).ready(function() {
  12. $.mockjax({
  13. url: "emails.action",
  14. response: function(settings) {
  15. var email = settings.data.email,
  16. emails = ["glen@marketo.com", "george@bush.gov", "me@god.com", "aboutface@cooper.com", "steam@valve.com", "bill@gates.com"];
  17. this.responseText = "true";
  18. if ($.inArray(email, emails) !== -1) {
  19. this.responseText = "false";
  20. }
  21. },
  22. responseTime: 500
  23. });
  24. $.mockjax({
  25. url: "users.action",
  26. response: function(settings) {
  27. var user = settings.data.username,
  28. users = ["asdf", "Peter", "Peter2", "George"];
  29. this.responseText = "true";
  30. if ($.inArray(user, users) !== -1) {
  31. this.responseText = "false";
  32. }
  33. },
  34. responseTime: 500
  35. });
  36. // validate signup form on keyup and submit
  37. var validator = $("#signupform").validate({
  38. rules: {
  39. firstname: "required",
  40. lastname: "required",
  41. username: {
  42. required: true,
  43. minlength: 2,
  44. remote: "users.action"
  45. },
  46. password: {
  47. required: true,
  48. minlength: 5
  49. },
  50. password_confirm: {
  51. required: true,
  52. minlength: 5,
  53. equalTo: "#password"
  54. },
  55. email: {
  56. required: true,
  57. email: true,
  58. remote: "emails.action"
  59. },
  60. dateformat: "required",
  61. terms: "required"
  62. },
  63. messages: {
  64. firstname: "Enter your firstname",
  65. lastname: "Enter your lastname",
  66. username: {
  67. required: "Enter a username",
  68. minlength: jQuery.validator.format("Enter at least {0} characters"),
  69. remote: jQuery.validator.format("{0} is already in use")
  70. },
  71. password: {
  72. required: "Provide a password",
  73. minlength: jQuery.validator.format("Enter at least {0} characters")
  74. },
  75. password_confirm: {
  76. required: "Repeat your password",
  77. minlength: jQuery.validator.format("Enter at least {0} characters"),
  78. equalTo: "Enter the same password as above"
  79. },
  80. email: {
  81. required: "Please enter a valid email address",
  82. minlength: "Please enter a valid email address",
  83. remote: jQuery.validator.format("{0} is already in use")
  84. },
  85. dateformat: "Choose your preferred dateformat",
  86. terms: " "
  87. },
  88. // the errorPlacement has to take the table layout into account
  89. errorPlacement: function(error, element) {
  90. if (element.is(":radio"))
  91. error.appendTo(element.parent().next().next());
  92. else if (element.is(":checkbox"))
  93. error.appendTo(element.next());
  94. else
  95. error.appendTo(element.parent().next());
  96. },
  97. // specifying a submitHandler prevents the default submit, good for the demo
  98. submitHandler: function() {
  99. alert("submitted!");
  100. },
  101. // set this class to error-labels to indicate valid fields
  102. success: function(label) {
  103. // set &nbsp; as text for IE
  104. label.html("&nbsp;").addClass("checked");
  105. },
  106. highlight: function(element, errorClass) {
  107. $(element).parent().next().find("." + errorClass).removeClass("checked");
  108. }
  109. });
  110. // propose username by combining first- and lastname
  111. $("#username").focus(function() {
  112. var firstname = $("#firstname").val();
  113. var lastname = $("#lastname").val();
  114. if (firstname && lastname && !this.value) {
  115. this.value = (firstname + "." + lastname).toLowerCase();
  116. }
  117. });
  118. });
  119. </script>
  120. </head>
  121. <body>
  122. <h1 id="banner"><a href="https://jqueryvalidation.org/">jQuery Validation Plugin</a> Demo</h1>
  123. <div id="main">
  124. <div id="content">
  125. <div id="header">
  126. <div id="headerlogo">
  127. <img src="milk.png" alt="Remember The Milk">
  128. </div>
  129. </div>
  130. <div style="clear: both;">
  131. <div></div>
  132. </div>
  133. <div class="content">
  134. <div id="signupbox">
  135. <div id="signuptab">
  136. <ul>
  137. <li id="signupcurrent"><a href=" ">Signup</a>
  138. </li>
  139. </ul>
  140. </div>
  141. <div id="signupwrap">
  142. <form id="signupform" autocomplete="off" method="get" action="">
  143. <table>
  144. <tr>
  145. <td class="label">
  146. <label id="lfirstname" for="firstname">First Name</label>
  147. </td>
  148. <td class="field">
  149. <input id="firstname" name="firstname" type="text" value="" maxlength="100">
  150. </td>
  151. <td class="status"></td>
  152. </tr>
  153. <tr>
  154. <td class="label">
  155. <label id="llastname" for="lastname">Last Name</label>
  156. </td>
  157. <td class="field">
  158. <input id="lastname" name="lastname" type="text" value="" maxlength="100">
  159. </td>
  160. <td class="status"></td>
  161. </tr>
  162. <tr>
  163. <td class="label">
  164. <label id="lusername" for="username">Username</label>
  165. </td>
  166. <td class="field">
  167. <input id="username" name="username" type="text" value="" maxlength="50">
  168. </td>
  169. <td class="status"></td>
  170. </tr>
  171. <tr>
  172. <td class="label">
  173. <label id="lpassword" for="password">Password</label>
  174. </td>
  175. <td class="field">
  176. <input id="password" name="password" type="password" maxlength="50" value="">
  177. </td>
  178. <td class="status"></td>
  179. </tr>
  180. <tr>
  181. <td class="label">
  182. <label id="lpassword_confirm" for="password_confirm">Confirm Password</label>
  183. </td>
  184. <td class="field">
  185. <input id="password_confirm" name="password_confirm" type="password" maxlength="50" value="">
  186. </td>
  187. <td class="status"></td>
  188. </tr>
  189. <tr>
  190. <td class="label">
  191. <label id="lemail" for="email">Email Address</label>
  192. </td>
  193. <td class="field">
  194. <input id="email" name="email" type="text" value="" maxlength="150">
  195. </td>
  196. <td class="status"></td>
  197. </tr>
  198. <tr>
  199. <td class="label">
  200. <label>Which Looks Right</label>
  201. </td>
  202. <td class="field" colspan="2" style="vertical-align: top; padding-top: 2px;">
  203. <table>
  204. <tbody>
  205. <tr>
  206. <td style="padding-right: 5px;">
  207. <input id="dateformat_eu" name="dateformat" type="radio" value="0">
  208. <label id="ldateformat_eu" for="dateformat_eu">14/02/07</label>
  209. </td>
  210. <td style="padding-left: 5px;">
  211. <input id="dateformat_am" name="dateformat" type="radio" value="1">
  212. <label id="ldateformat_am" for="dateformat_am">02/14/07</label>
  213. </td>
  214. <td>
  215. </td>
  216. </tr>
  217. </tbody>
  218. </table>
  219. </td>
  220. </tr>
  221. <tr>
  222. <td class="label">&nbsp;</td>
  223. <td class="field" colspan="2">
  224. <div id="termswrap">
  225. <input id="terms" type="checkbox" name="terms">
  226. <label id="lterms" for="terms">I have read and accept the Terms of Use.</label>
  227. </div>
  228. <!-- /termswrap -->
  229. </td>
  230. </tr>
  231. <tr>
  232. <td class="label">
  233. <label id="lsignupsubmit" for="signupsubmit">Signup</label>
  234. </td>
  235. <td class="field" colspan="2">
  236. <input id="signupsubmit" name="signup" type="submit" value="Signup">
  237. </td>
  238. </tr>
  239. </table>
  240. </form>
  241. </div>
  242. </div>
  243. </div>
  244. </div>
  245. </div>
  246. </body>
  247. </html>