form.on('submit(pattern-add-form-submit)', function (data) { console.log("data:" + data.field) if (data.field.title === '') { febs.alert.warn("标题不能为空q"); } else if (data.field.price === null) { febs.alert.warn("价格不能为空") } else { febs.post(ctx + 'pattern/add', data.field, function () { layer.closeAll(); febs.alert.success('新增成功'); $('#febs-pattern').find('#query').click(); }); } return false; });我想校验非空字段,第一次标题为空提交正常提示,然后标题输入值后点击提交没反应
时间: 2024-01-29 11:03:08 浏览: 181
根据您提供的代码,可能是因为您的表单提交是通过 Ajax 来实现的,而在第一次提交时,您已经通过 `return false` 阻止了默认的表单提交行为,从而导致了表单的重置。因此,后续的提交并没有触发表单的提交事件。
为了解决这个问题,您可以在表单验证通过后,手动触发表单的提交事件,而不是使用 `return false` 来阻止默认行为。修改后的代码如下:
```javascript
form.on('submit(pattern-add-form-submit)', function (data) {
console.log("data:" + data.field);
if (data.field.title === '') {
febs.alert.warn("标题不能为空q");
} else if (data.field.price === null) {
febs.alert.warn("价格不能为空");
} else {
febs.post(ctx + 'pattern/add', data.field, function () {
// 清除表单数据
form[0].reset();
layer.closeAll();
febs.alert.success('新增成功');
$('#febs-pattern').find('#query').click();
});
// 手动触发表单提交事件
form.trigger('submit');
}
// 返回 false 防止事件冒泡
return false;
});
```
这样,当表单验证通过后,会先提交表单数据,然后手动触发表单的提交事件,最终实现表单的提交。
另外,如果您使用的是 layui 框架,也可以使用 `form.render()` 方法来重新渲染表单。例如:
```javascript
form.render();
```
这样可以重新渲染表单,从而避免表单重置。
阅读全文