我已经使用过 parsley.js 多次,并且从我上次使用 parsley 中复制了代码。
但是,每次我提交表单时,页面都会刷新。preventDefault
似乎适用于我的其他页面并阻止页面刷新,但由于某种原因,当我现在尝试时它不起作用。谁能弄清楚为什么不呢?
<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>
您正在绑定submit
事件到input
元素。如果您检查jquery $.submit() 文档,它指出:
当用户尝试提交表单时,提交事件被发送到元素。它只能附加到<form>
元素。可以通过单击明确的按钮来提交表单<input type="submit">
, <input type="image">
, or <button type="submit">
,或在某些表单元素获得焦点时按 Enter 键。
这是你的主要问题,这就是原因alert
永远不会显示(事实上,该代码永远不会执行)。
我还要改变一些事情:
-
$('#rform').parsley( 'validate' )
应该$('#rform').parsley().validate()
,假设您使用的是欧芹 2.*
-
$('#rform').parsley( 'isValid' )
应该$('#rform').parsley().isValid()
.
- Use $.on()代替
$.submit()
.
- Remove
onClick
来自register_signup
元素。由于您已经在使用 javascript,因此我将直接在 javascript 代码中执行此操作,而不是 onclick。这更多的是个人喜好。
所以,你的代码将是这样的:
<form id='rform' name='rform'>
<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" value='Sign Up' />
</form>
<script>
$(document).ready(function() {
$("#rform").on('submit', function(e){
e.preventDefault();
var form = $(this);
form.parsley().validate();
if (form.parsley().isValid()){
alert('valid');
}
});
});
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)