【发布时间】:2020-07-17 14:21:39
【问题描述】:
在一个 Svelte 应用程序中,我有一个带有简单验证的表单。
表格
<form id="surveyForm" class="mt-4">
<div class="form-group">
<input type="text" class="form-control" placeholder="First name">
</div>
<div class="form-group">
<input type="text" class="form-control" placeholder="Last name">
</div>
<button class="btn btn-full" on:click={Continue}>Continue</button>
</form>
验证:
import {fly, fade} from 'svelte/transition';
let hasError = false;
let errMessage = "";
let isSuccessVisible = false;
function validateInput() {
var surveyForm = document.getElementById('surveyForm'),
inputFields = surveyForm.querySelectorAll('input[type=text]');
hasError = false;
inputFields.forEach(function(field) {
field.classList.remove("is-invalid");
var inputFieldVal = field.value;
if (inputFieldVal.length == 0) {
field.classList.add("is-invalid");
hasError = true;
}
});
errMessage = "All the fileds are mandatory";
}
function Continue(e) {
e.preventDefault();
validateInput();
if (hasError == false) {
isSuccessVisible = true;
setTimeout(function() {
isSuccessVisible = false;
}, 3000);
}
}
为了给无效的表单域加上红色边框,我使用border: 1px solid #c00 !important:
.error-alert {
border: 1px solid #c00 !important;
color: #c00;
}
is-invalid 类已正确添加(和删除),但默认的 global.css 样式覆盖了我的组件级样式,如您在此 REPL 中所见。
为什么会这样?什么是可靠的修复方法?
注意:所描述的案例是一个简化的案例,实际上我可能需要其他验证,例如确保值是数字。我必须实施的解决方案不是一个非常具体的解决方案。
【问题讨论】:
标签: javascript css svelte