【发布时间】:2020-11-28 04:37:57
【问题描述】:
我有引导模式,它打开一个模式以允许用户输入表单并且它可以工作。我为表单验证实现了 parseley.js,它有点工作。问题是当验证通过时,它会重新加载页面(从下面的 gif 中可以看到),这不是我期望的行为。我期望在validateForm() 中看到alert('ok')。
这就是我定义表单标签和提交按钮的方式
<form id="myForm" data-parsley-validate="">
<button class="btn btn-default" >Save</button>
</form>
这是我使用 Parsely.js 验证表单的功能。当所有验证通过时,我希望看到 alert('ok') 但它没有。相反,它会重新加载页面。
function validateForm() {
$('#myForm').parsley().on('field:validated', function () {
debugger
var ok = $('.parsley-error').length === 0;
$('.bs-callout-info').toggleClass('hidden', !ok);
$('.bs-callout-warning').toggleClass('hidden', ok);
})
.on('form:submit', function () {
debugger
alert('ok') // I expect to reach here when pass validation pass but it doesn't
postCustomer();
return false;
});
}
这是我的引导模式
$('#modalCustomerForm').on('shown.bs.modal', function () {
debugger
validateForm();
return false;
})
如果我在下面添加示例代码,则 parsley 没有添加 css 类。我怀疑欧芹没有加载。但是,验证工作。当我按下提交按钮时,我可以在文本框底部看到红色错误消息。
<div class="bs-callout bs-callout-warning hidden">
<h4>Oh snap!</h4>
<p>This form seems to be invalid :(</p>
</div>
<div class="bs-callout bs-callout-info hidden">
<h4>Yay!</h4>
<p>Everything seems to be ok :)</p>
</div>
进一步的故障排除。如果我向按钮添加 id 并创建按钮单击事件,它不会自动重新加载页面。但如果我这样做,则 parsley.js 验证不起作用。
<button class="btn btn-default" type="submit" id="formBtn">Save</button>
$('#formBtn').on("click", function (e) {
debugger
postCustomer();
debugger
e.preventDefault();
})
这就是为什么我将我的postCustomer() 放在此处(下方)validateForm() 但它也不起作用:
.on('form:submit', function () {
debugger
alert('ok')
postCustomer();
return false; // Don't submit form for this demo
});
【问题讨论】:
-
你可以试试这个:.on('form:submit' , function(e) { e.preventDefault() })。让我知道这是否有效!
-
@dhruwlalan。我试过了,但还是同样的问题。
-
您的提交事件处理程序是否正常工作?如果不;尝试
"submit"而不是"form:submit"作为事件参数。 -
只是
submit不起作用。form:submit工作
标签: javascript twitter-bootstrap-3 bootstrap-modal parsley.js