在IE 11中,当在ASP.NET Webforms中的每个必填字段中添加事件监听器时,Bootstrap4验证无法工作。

问题描述 投票:0回答:1

我在用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中能正常工作?

javascript internet-explorer bootstrap-4 webforms
1个回答
0
投票

我发现我的代码在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');
© www.soinside.com 2019 - 2024. All rights reserved.