I have used parsley.js many times and have literally copied the code from my last use of parsley.
However, every time I submit the form the page refreshes. preventDefault
seems to work on my other pages and stops the page from refreshing but for some reason when I tried now it won't work. Can anyone figure out why not?
<script>
$(function(){
$("#register_signup").submit(function(e){
e.preventDefault();
var form = $(this);
if ($('#rform').parsley( 'isValid' )){
alert('valid');
}
});
});
</script>
<form id='rform' name='rform' data-parsley-validate>
<input id='reg_password' class='register_input' type='text' autocomplete="off" data-parsley-trigger="change" placeholder='Password' required>
<input id='reg_cpassword' class='register_input' type='text' name="reg_cpassword" placeholder='Confirm password' data-parsley-equalto="#reg_password" required>
<input id='register_signup' type="submit" onClick="javascript:$('#rform').parsley( 'validate' );" value='Sign Up' />
</form>
When you apply data-parsley-validate to your form, you don't need to apply javascript to form to stop submit until all validation run. But if you applying javascript return false when parsely() not valid. And just make sure you have include parsley.js code file.
if you are using parsely 2 you can try this
for more details parsely documentation check Form with examples and events
You are binding the
submit
event to ainput
element. If you check the jquery $.submit() documentation, it states that:This is your main problem and this is why
alert
will never be displayed (in fact, that code is never executed).I would also change a few things:
$('#rform').parsley( 'validate' )
should be$('#rform').parsley().validate()
, assuming you are using Parsley 2.*$('#rform').parsley( 'isValid' )
should be$('#rform').parsley().isValid()
.$.on()
instead of$.submit()
.onClick
from theregister_signup
element. Since you are already using javascript, I would do this directly in the javascript code instead of onclick. This is more a personal preference.So, your code will be something like this: