首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用JQuery $(...).val("")清除包含5个或更多字段的表单时,IE11崩溃

使用JQuery $(...).val("")清除包含5个或更多字段的表单时,IE11崩溃
EN

Stack Overflow用户
提问于 2013-12-18 17:40:07
回答 5查看 4.8K关注 0票数 17

如果我使用$('form input‘)在IE11中清除一个包含5个或更多字段的表单,.val(“”) IE11将崩溃。HTML:

代码语言:javascript
复制
<form>
    <label>1</label><input type="text"/>
    <label>2</label><input type="text"/>
    <label>3</label><input type="text"/>
    <label>4</label><input type="text"/>
    <label>5</label><input type="text"/>
</form>

JS:

代码语言:javascript
复制
$(document).ready(function(){
    $('#clearFormNormal').click(function(){
        $("form input").val("");
    });
});

当我使用setTimeout进行递归操作时,它是有效的。

JS:

代码语言:javascript
复制
function clearFields (counter) {
    var i = counter || 0, deferred = new $.Deferred();
    if ($("form input").eq(i).length === 1){
        setTimeout(function(){
            $("form input").eq(i).val("");
            i = i + 1;
            clearFields(i).always(function(){
                deferred.resolve();
            });
        },0);
    } else {
        deferred.resolve();
    }
    return deferred.promise();
}

$(document).ready(function(){
    $('#clearFormSetTimeout').click(function(){
        clearFields();
    });
});

另请参阅http://jsfiddle.net/fransoverbeek/Cy5D5/7/

这是一个IE11错误吗?

EN

回答 5

Stack Overflow用户

发布于 2013-12-20 12:24:42

我相信这是IE的一个bug,与jQuery无关,因为你可以通过下面的html页面来显示它,如下所示:

代码语言:javascript
复制
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>    
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"></meta>
    <title>test</title>
  </head>
  <body>
  <form id="form_1">
  <input type="text" value="" size="10"/><br/>
  <input type="text" value="" size="10"/><br/>
  <input type="text" value="" size="10"/><br/>
  <input type="text" value="" size="10"/><br/>
  <input type="text" value="" size="10"/><br/>
  <input type="text" value="" size="10"/><br/>
  <input type="text" value="" size="10"/><br/>
  <input type="text" value="" size="10"/><br/>
  <input type="text" value="" size="10"/><br/>
  <input type="text" value="" size="10"/><br/>
  <input type="text" value="" size="10"/><br/>
  <input type="button" value="reset" onclick="document.getElementById('form_1').reset();">
  </form>.
  </body>
</html>

你可以发现IE 11在你重置窗体后会崩溃。

票数 5
EN

Stack Overflow用户

发布于 2013-12-18 17:44:14

试一试

代码语言:javascript
复制
 $(':input',"#" + form.id)
  .not(':button, :submit, :reset, :hidden')
  .val('');

代码语言:javascript
复制
$("#" + form.id)[0].reset();

检查此Clearing file input box in Internet Explorer

票数 3
EN

Stack Overflow用户

发布于 2014-02-12 14:46:15

此错误的修复程序已包含在Windows Update上发布的2014年2月IE更新中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20654447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档