Javascript driven forms in Django -
django uses forms api input validation. form sent template, , rendered html (as_p , friends).
when user ready, post
form, data validated, , form re-rendered on template if not valid.
this odd when form not valid because lack of enough caracteres (i.e. min_length) on field or invalid characters: 1 post tell user missing basic.
so, there available way (django or app) of rendering form javascript code "tests"[*] of form' fields on client-side? i.e. have form rendered as_javascript(...)
dynamically shows error messages shown form.errors?
this should not work fields because require database hit, should work on simple (and common) fields, namely charfield, textfield, etc.
[*] "tests" because validation has made on server-side.
so want validate in js before submitting. here's 1 way that. instead of putting input of type submit in form should put button of type button:
<form id="my-form" submit="..."> ... <input type='button' id='submit-button' value="save"> </form>
note unless specify type "button", still try submit.
then in js file write (include jquery in html file):
$('#submit-button').click(function() { var errors = testerrors(); // function tests errors. if (errors != "") { alert(errors); } else { $('#my-form').submit(); } }
example testerrors():
function testerrors() { var country = $("#id_country").val(); var city = $("#id_city").val(); var errors = ""; if (country == "") { errors += "- please select country\n"; } if (city.length <= 10 ) { errors += "- city name short\n"; } return errors; }
so in testerrors define own tests each field. in example there two, country , city. country code tests whether it's blank , city whether it's longer 10 characters. can define further tests of own. please refer jquery documentation on how retrieve values different types of form fields.
Comments
Post a Comment