As the topic states, I'm trying to validate form inputs using jQuery. The input field in question is a text field, with id "input_zip". It is supposed to validate US zip codes. The success or error message needs to be printed in a div with id "zip_error". register_error and "register_success" are css classes which represent the style for the message that would be printed in "zip_error" div if the input doesn't and does match respectively. So here is the code. Needless saying that it doesn't work and since this is my first attempt to write such code, I'm at a total loss. I'm not sure if it is the matching pattern that is wrong or if the entire algorithm is wrong. I used alerts instead of printing out text in "zip_error" div, to no avail.
<script type='text/javascript'> //Validate registration inputs
$(document).ready(function() {
$("#input_zip").keydown(function(){
var zip_value = $(this).val();
var zip_pattern = "^([0-9]{5})$";
if(!zip_patten.match(zip_value)) { //If the current value doesn't match accepted pattern
$("#zip_error").html("<span class = 'register_error'>Enter a valid zip code</span>");
} else {$("#zip_error").html("<span class = 'register_success'>Valid zip</span>"); }
});
});
</script>
I don't think you want to use the keydown event. That means that you try to match an entire zipcode every time the user hits a key. I'm sure there's an event for when the cursor is removed from the input element (blur?), but I don't have time now to look it up. Maybe you could do that.
Keydown won't work in your case. It will always check once a key is pressed, which is not what you want. Instead of keydown event you should use the blur event.