Jorn - thanks for the responses - I resolved my problem - for the record I had a mismatch between the versions of JQuery (1.3.2) and an earlier (incompatible) version of the plugin. This was causing some errors that I managed to track down with Firebug.
Downloaded the new version of the validation plugin and the behaviour is now what I expect. So it looks like this is nothing to do with Django. Hope this helps someone else in the future. Brendan On May 6, 2:47 pm, Jörn Zaefferer <joern.zaeffe...@googlemail.com> wrote: > You can set debug:true for debugging. It will always prevent the form > submit, which is useful to look at errors that are thrown during > validation. > > Jörn > > On Wed, May 6, 2009 at 8:37 PM, BrendanC <bren...@gmail.com> wrote: > > > Jon - Good catch - however that was just a cut/paste problem - below > > is a new example that does not work as expected - for some reason the > > validation errors are ignored and the form is posted - not what I was > > expecting. Is there something else I need to do to prevent form from > > posting on errors? Why would the validation errors get ignored? > > > Any ideas? > > > TIA > > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:// > >www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> > > <html xmlns="http://www.w3.org/1999/xhtml"> > > <head> > > <meta http-equiv="Content-Type" content="text/html; > > charset=ISO-8859-1" /> > > > <script type="text/javascript" language="javascript" src="/media/ > > js/jquery-1.3.2.js""></script> > > <script type="text/javascript" language="javascript" src="/media/ > > js/jquery.validate.js"></script> > > > <meta http-equiv="Content-Language" content="en-us" /> > > <meta http-equiv="Content-Type" content="text/html; > > charset=utf-8" /> > > > <title>Django JQuery Example</title> > > > <style type="text/css"> > > pre { text-align: left; } > > label.error { float: top; color: red; padding-left: .5em; vertical- > > align: top; } > > > </style> > > > <script id="demo" type="text/javascript"> > > $(document).ready(function() { > > // validate signup form on keyup and submit > > var validator = $("#contact-us").validate({ > > rules: { > > subject: "required", > > email:{ > > required: true, > > email: true > > } > > }, > > messages: { > > subject: "Enter subject info", > > email: "Enter email info", > > } > > }); > > > }); > > </script> > > > </head> > > <body> > > > <div id="main"> > > > <div style="clear: both;"></div> > > </div> > > > <div class="content"> > > > <body bgcolor="#D2FFD2"> > > <img src="/media/images/Masthead.png" width="942" height="162"> > > <form method="post" action="" id="contact-us"> > > > <h3> Django/JQuery Demo - Get Request </h3> > > <table> > > <tr><th><label for="id_subject">Subject:</label></ > > th><td><input id="id_subject" type="text" name="subject" > > maxlength="100" /></td></tr> > > > <tr><th><label for="id_email">Email:</label></th><td><input > > id="id_email" type="text" name="email" maxlength="100" /></td></tr> > > <tr><th><label for="id_msgtext">Text:</label></th><td><textarea > > id="id_msgtext" rows="10" cols="40" name="msgtext"></textarea></td></ > > tr> > > <tr> > > <td></td> > > <td> > > <div class="submit"> > > <input type="submit" value="Submit" value="update" /> > > </div></td> > > > </tr> > > </table> > > > </form> > > </div> > > </body> > > </html> > > > On May 5, 10:35 am, Jörn Zaefferer <joern.zaeffe...@googlemail.com> > > wrote: > >> You define rules for a field "sender", but there is no input with > >> name="sender". > > >> Jörn > > >> On Tue, May 5, 2009 at 7:28 PM, BrendanC <bren...@gmail.com> wrote: > > >> > JQuery newbie question re using validation plugin with Django newform. > >> > I have a simple email feedback contact django form that I wanted to > >> > enhance with some JQuery validation. I created a standalone (Non > >> > Django) version of the form and it works correctly. > > >> > However when I create a Django version of the form the validation > >> > rules seems to be ignored and the form is always posted - I would > >> > expect the form to fail, and never post. One difference (not sure if > >> > it's siignificant) is that the Django forms are created from classes/ > >> > templates and render as tables. However the exact same HTML code works > >> > for the basic form. > > >> > I'm now thinking that there must be something different re how the > >> > submit is being processed for the Django form - but I'm stumped. > >> > Anyone got any ideas/things to try? > > >> > TIA, > >> > Brendan > > >> > Below is a simplified code (both Basic and Djange versions) sample > >> > stripped to one validation field: > > >> > Basic version of the form (working): > > >> > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:// > >> >www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> > >> > <html xmlns="http://www.w3.org/1999/xhtml"> > >> > <head> > >> > <meta http-equiv="Content-Type" content="text/html; > >> > charset=ISO-8859-1" /> > > >> > <script type="text/javascript" language="javascript" > >> > src="/media/js/ > >> > jquery-1.3.2.js""></script> > >> > <script type="text/javascript" language="javascript" > >> > src="/media/js/ > >> > jquery.validate.js"></script> > > >> > <meta http-equiv="Content-Language" content="en-us" /> > >> > <meta http-equiv="Content-Type" content="text/html; > >> > charset=utf-8" /> > > >> > <title>Django JQuery Example</title> > >> > <link href="/media/css/default.css" media="screen" type="text/css" > >> > rel="stylesheet"> > > >> > <style type="text/css"> > >> > pre { text-align: left; } > >> > label.error { float: top; color: red; padding-left: .5em; > >> > vertical- > >> > align: top; } > > >> > </style> > > >> > <script id="demo" type="text/javascript"> > >> > $(document).ready(function() { > >> > // validate signup form on keyup and submit > >> > var validator = $("#contact-us").validate({ > >> > rules: { > >> > sender: "required", > >> > minlength:4 > >> > }, > >> > messages: { > >> > sender: "Enter sender's name", > >> > } > >> > }); > >> > return false; > > >> > }); > >> > </script> > > >> > </head> > >> > <body> > > >> > <div id="main"> > > >> > <div style="clear: both;"></div> > >> > </div> > > >> > <div class="content"> > > >> > <body bgcolor="#D2FFD2"> > >> > <img src="/media/images/Masthead.png" width="942" height="162"> > >> > <form method="post" action="" id="contact-us"> > > >> > {% block content %} > >> > <h3> {{ message }} </h3> > >> > <table> > >> > {{ eForm }} > >> > <tr> > >> > <td></td> > >> > <td> > >> > <div class="submit"> > >> > <input type="submit" value="Submit" value="update" /> > >> > </div></td> > >> > </tr> > >> > </table> > >> > {% endblock %} > >> > </form> > >> > </div> > >> > </body> > > >> > Django version of the form below (validation not working): > > >> > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:// > >> >www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> > >> > <html xmlns="http://www.w3.org/1999/xhtml"> > >> > <head> > >> > <meta http-equiv="Content-Type" content="text/html; > >> > charset=ISO-8859-1" /> > > >> > <script type="text/javascript" language="javascript" > >> > src="/media/js/ > >> > jquery-1.3.2.js""></script> > >> > <script type="text/javascript" language="javascript" > >> > src="/media/js/ > >> > jquery.validate.js"></script> > > >> > <meta http-equiv="Content-Language" content="en-us" /> > >> > <meta http-equiv="Content-Type" content="text/html; > >> > charset=utf-8" /> > > >> > <title>Django JQuery Example</title> > >> > <link href="/media/css/default.css" media="screen" type="text/css" > >> > rel="stylesheet"> > > >> > <style type="text/css"> > >> > pre { text-align: left; } > >> > label.error { float: top; color: red; padding-left: .5em; > >> > vertical- > >> > align: top; } > > >> > </style> > > >> > <script id="demo" type="text/javascript"> > >> > $(document).ready(function() { > >> > // validate signup form on keyup and submit > >> > var validator = $("#contact-us").validate({ > >> > rules: { > >> > sender: "required", > >> > minlength:4 > >> > }, > >> > messages: { > >> > sender: "Enter sender's name", > >> > } > >> > }); > >> > return false; > > >> > }); > >> > </script> > > >> > </head> > >> > <body> > > >> > <div id="main"> > > >> > <div style="clear: both;"></div> > >> > </div> > > >> > <div class="content"> > > >> > <body bgcolor="#D2FFD2"> > >> > <img src="/media/images/Masthead.png" width="942" height="162"> > >> > <form method="post" action="" id="contact-us"> > > >> > <h3> Django/JQuery Demo - Get Request </h3> > >> > <table> > > >> > <tr><th><label > >> > for="id_subject">Subject:</label></th><td><input > >> > id="id_subject" type="text" name="subject" maxlength="100" /></td></ > >> > tr> > >> > <tr><th><label for="id_email">Email:</label></th><td><input > >> > id="id_email" type="text" name="email" maxlength="100" /></td></tr> > >> > <tr><th><label for="id_msgtext">Text:</label></th><td><textarea > >> > id="id_msgtext" rows="10" cols="40" name="msgtext"></textarea></td></ > >> > tr> > >> > <tr> > >> > <td></td> > >> > <td> > >> > <div class="submit"> > >> > <input type="submit" value="Submit" value="update" /> > > >> > </div></td> > >> > </tr> > >> > > > ... > > read more »