我在用bootstrap4验证asp.net webform控件,像这样。
<form runat="server" class="needs-validation" novalidate>
<div class="form-group">
<asp:TextBox runat="server" ID="Amount" CssClass="form-control" Text="" required></asp:TextBox>
</div>
<asp:Button ID="Submit" OnClick="Submit_Click" Text="Submit" runat="server" />
</form>
然后在主页面的javascript中添加一个事件监听器,像这样。
window.addEventListener('load', () => {
var forms = document.getElementsByClassName('needs-validation');
for (let form of forms) {
form.addEventListener('submit', (evt) => {
if (!form.checkValidity()) {
evt.preventDefault();
evt.stopPropagation();
} else {
console.info('All form fields are now valid...');
}
form.classList.add('was-validated');
});
}
});
在Chrome & FireFox中工作正常,但在IE11中没有任何验证。在IE11中按下提交按钮后,页面只是刷新。 在IE11的控制台中,它说这一行有一个语法错误。
window.addEventListener('load', () => {
有人知道我做错了什么吗? 如何解决这个问题,使验证在IE11中能正常工作?
我发现我的代码在Chrome和Firefox中可以正常工作,但在IE 11和Edge中就不行了。我通过不使用ES6的JavaScript功能,使它在这些浏览器中也能工作。
1.) 不得不避免使用箭头功能。
替换了
window.addEventListener('load', () => {
随着
window.addEventListener('load', function () {
还有
form.addEventListener('submit', (evt) => {
随着
form.addEventListener('submit', function (evt) {
2.)表单迭代器的let形式在IE11中也没有重新规范,但因为我只用一个表单,所以我就用这个代替。
var formName = document.getElementById('Form1');