IE 11无法提交HTML表单

时间:2013-12-21 21:31:12

标签: javascript html forms internet-explorer internet-explorer-11

我有这个HTML表单

<form name="nextform" action="anotherpage.php" method="post" enctype="multipart/form-data">
    <input name="pinid" id="pinid" type="hidden">
    <input type="submit" name="submit" id="post" value="Lets Go" class="formButtonMap">
</form>

pinid使用JavaScript动态获取值。当它获得一个值时,我会提醒它并且它有效。

但是,当我点击Lets Go按钮时,没有任何反应。我看到Internet Explorer加载了几分钟,然后我收到消息“网页没有响应”。如果我点击刷新它会转到anotherpage.php,但表单中的值没有到达服务器。

很少显示此消息:

  

Visual Studio即时调试程序

     

在iexplorer.exe [688]

中发生未处理的win32异常      

可能的调试器:

     

Microsoft Visual Studio 2012新实例

仅在Internet Explorer 11.0.2中观察到此行为。该表单适用于旧版Internet Explorer以及Chrome和Firefox。我在IE的控制台中没有错误。

以下是JavaScript代码,位于表单上方:

// called when another button is clicked - basicaly is websockets
function save() {
    var so = new WebSocket("ws://localhost:8000");
    so.onerror = function (evt) {
        alert('problem');
    }

    if (sara == 'LINES') {
        so.onopen = function() {
            so.send(JSON.stringify({
                command: 'insertAll',
                name: document.getElementById('name').value
            }));
        }
    }

    if (sara == 'POLY') {
        so.onopen = function() {
            so.send(JSON.stringify({
                command: 'insertHalf',
                name: document.getElementById('name').value
            }));
        }
    }

    so.onmessage = function (evt) {
        var received_msg = evt.data;

        document.getElementById("next").style.display = "block";
        document.getElementById("name").value = "";
        document.getElementById("descr").value = "";
        clearLinks();

        document.getElementById("pinid").value = received_msg;
        alert(document.getElementById("pinid").value); // works

        so.close();
    }
}

我尝试使用document.getElementById("nextform").submit();编辑代码,问题仍然存在。

是我吗?这是一个错误吗?我错过了什么?

6 个答案:

答案 0 :(得分:4)

也许不是你的问题,但是:

<input type="submit" name="submit" ... >

为表单控件提供 submit 的名称将使用对控件的引用替换表单的 submit 方法,因此调用form.submit()将尝试“调用“输入。

答案 1 :(得分:4)

我认为在IE中将表单值设置为空时这是一个错误。

我建议尝试一种不同的方法来重置表单值,我以前使用过这种方法:

document.getElementById('name').parentNode.innerHTML = '';

答案 2 :(得分:3)

嗨,您的代码中可能存在问题,您错过了在表单中添加ID,并且您尝试通过它未定义的ID来访问表单。

document.getElementById("nextform").submit();

必需的

<form name="nextform" id="nextform" action="anotherpage.php" method="post" enctype="multipart/form-data">

...
...
...

</form>

答案 3 :(得分:0)

跟踪sunpage.php页面收到回发时发生的事情,evt.data可能没有按预期编码(是二进制还是文本,如果是文本,是utf-8)。

回发到另一个页面,其中所有内容都输出回发的值。

套接字是否会抛出异常?

 so.close();

答案 4 :(得分:0)

我的原始代码包含一个包含超过5个字段的表单。提交时调用save()save()函数也使用JS清除字段。

IE11中存在一个错误,如果您尝试使用JS清除超过5个字段,则会导致浏览器崩溃。请参阅here,有解决方法。

该错误导致第一个表单崩溃,然后崩溃nextform表单以及浏览器。我APOLOGIZE没有发布我的所有代码,我不知道它与第一个表单有关。

因为我认为同一段代码有两个不同的问题,我发布了另一个问题,非常相似,here

答案 5 :(得分:0)

在我的情况下,输入按钮具有相同的ID和NAME。因此,您可以检查它们是否相同,如果它们确实相同,则使用其中一个参数的不同值。

我希望它有所帮助。